From b30456d682308089aa7f9f3658dde5610b1a9e3f Mon Sep 17 00:00:00 2001 From: nissimsan Date: Thu, 14 Mar 2024 07:20:13 +0000 Subject: [PATCH] deploy: 77797f4b6018243ebec54c3ba9375d4cf278d764 --- 404.html | 8 +++---- assets/js/1b223e5c.d6e1408b.js | 1 - ...2532d.2b94885c.js => 1e32532d.7e39b842.js} | 2 +- assets/js/2505769c.173a9778.js | 1 - assets/js/2505769c.6f3d5e52.js | 1 + assets/js/3551f6a5.2afd14ba.js | 1 - assets/js/3551f6a5.b0466f1e.js | 1 + assets/js/62737bf6.9fdb17ce.js | 1 - assets/js/62737bf6.aac0414b.js | 1 + assets/js/935f2afb.5eca8d59.js | 1 - assets/js/935f2afb.7de874a9.js | 1 + assets/js/940a6c6b.ea30e362.js | 1 - assets/js/940a6c6b.f9d150f1.js | 1 + ...31c41.916e723c.js => fa231c41.34aec809.js} | 2 +- assets/js/main.062b0c1b.js | 2 ++ ...CENSE.txt => main.062b0c1b.js.LICENSE.txt} | 0 assets/js/main.af697755.js | 2 -- assets/js/runtime~main.85c6032b.js | 1 + assets/js/runtime~main.bff157f0.js | 1 - docs/about/FAQ/index.html | 8 +++---- docs/about/Goals/index.html | 10 ++++----- docs/about/Governance/index.html | 8 +++---- docs/about/Pledge/index.html | 8 +++---- docs/about/Requirements/index.html | 12 +++++------ docs/about/index.html | 8 +++---- docs/business-case/Associations/index.html | 8 +++---- docs/business-case/Certifiers/index.html | 8 +++---- docs/business-case/Industry/index.html | 8 +++---- docs/business-case/Regulators/index.html | 8 +++---- docs/business-case/Software/index.html | 8 +++---- docs/business-case/index.html | 10 ++++----- .../ExtensionsMethodology/index.html | 8 +++---- docs/extensions/ExtensionsRegister/index.html | 8 +++---- docs/extensions/index.html | 8 +++---- docs/implementations/Conformity/index.html | 8 +++---- docs/implementations/Register/index.html | 8 +++---- docs/implementations/index.html | 8 +++---- docs/specification/Architecture/index.html | 10 ++++----- docs/specification/Confidentiality/index.html | 10 ++++----- .../ConformityCredential/index.html | 10 ++++----- docs/specification/Counterfeiting/index.html | 10 ++++----- docs/specification/DataCarriers/index.html | 10 ++++----- .../DigitalProductPassport/index.html | 10 ++++----- docs/specification/GS1Binding/index.html | 16 -------------- docs/specification/Identifiers/index.html | 10 ++++----- docs/specification/MassBalance/index.html | 10 ++++----- docs/specification/Rules/index.html | 10 ++++----- .../TraceabilityEvents/index.html | 10 ++++----- docs/specification/TrustAnchors/index.html | 10 ++++----- docs/specification/TrustGraphs/index.html | 10 ++++----- .../VerifiableCredentials/index.html | 21 ++++++++++++++----- docs/specification/Vocabularies/index.html | 10 ++++----- docs/specification/index.html | 10 ++++----- docs/tools-and-support/Support/index.html | 8 +++---- docs/tools-and-support/TestCases/index.html | 8 +++---- docs/tools-and-support/TestService/index.html | 8 +++---- docs/tools-and-support/Tools/index.html | 8 +++---- docs/tools-and-support/index.html | 8 +++---- index.html | 8 +++---- privacy/index.html | 8 +++---- sitemap.xml | 2 +- terms/index.html | 8 +++---- 62 files changed, 209 insertions(+), 215 deletions(-) delete mode 100644 assets/js/1b223e5c.d6e1408b.js rename assets/js/{1e32532d.2b94885c.js => 1e32532d.7e39b842.js} (87%) delete mode 100644 assets/js/2505769c.173a9778.js create mode 100644 assets/js/2505769c.6f3d5e52.js delete mode 100644 assets/js/3551f6a5.2afd14ba.js create mode 100644 assets/js/3551f6a5.b0466f1e.js delete mode 100644 assets/js/62737bf6.9fdb17ce.js create mode 100644 assets/js/62737bf6.aac0414b.js delete mode 100644 assets/js/935f2afb.5eca8d59.js create mode 100644 assets/js/935f2afb.7de874a9.js delete mode 100644 assets/js/940a6c6b.ea30e362.js create mode 100644 assets/js/940a6c6b.f9d150f1.js rename assets/js/{fa231c41.916e723c.js => fa231c41.34aec809.js} (72%) create mode 100644 assets/js/main.062b0c1b.js rename assets/js/{main.af697755.js.LICENSE.txt => main.062b0c1b.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.af697755.js create mode 100644 assets/js/runtime~main.85c6032b.js delete mode 100644 assets/js/runtime~main.bff157f0.js delete mode 100644 docs/specification/GS1Binding/index.html diff --git a/404.html b/404.html index 61887a14..914dfb1a 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | UN Transparency Protocol - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/js/1b223e5c.d6e1408b.js b/assets/js/1b223e5c.d6e1408b.js deleted file mode 100644 index 3b2b9061..00000000 --- a/assets/js/1b223e5c.d6e1408b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[1438],{5318:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>f});var i=n(7378);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,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=i.createContext({}),p=function(e){var t=i.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=p(e.components);return i.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=p(n),f=r,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||o;return n?i.createElement(m,a(a({ref:t},l),{},{components:n})):i.createElement(m,a({ref:t},l))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,a=new Array(o);a[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,a[1]=s;for(var p=2;p{n.d(t,{ZP:()=>a});var i=n(5773),r=(n(7378),n(5318));const o={toc:[]};function a(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,i.Z)({},o,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}a.isMDXComponent=!0},6473:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var i=n(5773),r=(n(7378),n(5318)),o=n(5611);const a={sidebar_position:55,title:"GS1 Binding"},s=void 0,c={unversionedId:"specification/GS1Binding",id:"specification/GS1Binding",title:"GS1 Binding",description:"Overview",source:"@site/docs/specification/GS1Binding.md",sourceDirName:"specification",slug:"/specification/GS1Binding",permalink:"/spec-untp/docs/specification/GS1Binding",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/GS1Binding.md",tags:[],version:"current",sidebarPosition:55,frontMatter:{sidebar_position:55,title:"GS1 Binding"},sidebar:"tutorialSidebar",previous:{title:"ESG Rules",permalink:"/spec-untp/docs/specification/Rules"},next:{title:"Business Case",permalink:"/spec-untp/docs/business-case/"}},p={},l=[{value:"Overview",id:"overview",level:2}],u={toc:l};function d(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,i.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(o.ZP,{mdxType:"Disclaimer"}),(0,r.kt)("h2",{id:"overview"},"Overview"),(0,r.kt)("p",null,"The UNTP is agnostic of any technology or any identifier system. Nevertheless, GS1 is by far the most widely used scheme for product identification, particularly at the downstream / consumer end of the value chain. Billions of unique product/shipment identifiers have been issued and over 5 billion product barcode scans happen around the world every day. UNTP does not require any actor to adopt GS1 standards and identifiers, but it certainly must facilitate existing GS1 users to adopt the UNTP. To this end, the UNTP defines a specific binding that shows how existing GS1 users can leverage their existing investments when implementing the UNTP."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1e32532d.2b94885c.js b/assets/js/1e32532d.7e39b842.js similarity index 87% rename from assets/js/1e32532d.2b94885c.js rename to assets/js/1e32532d.7e39b842.js index 43778f50..bc7f9c9b 100644 --- a/assets/js/1e32532d.2b94885c.js +++ b/assets/js/1e32532d.7e39b842.js @@ -1 +1 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[8155],{5318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7378);function s(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,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,s=e.mdxType,o=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),d=p(n),m=s,f=d["".concat(c,".").concat(m)]||d[m]||l[m]||o;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function m(e,t){var n=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var o=n.length,i=new Array(o);i[0]=d;var a={};for(var c in t)hasOwnProperty.call(t,c)&&(a[c]=t[c]);a.originalType=e,a.mdxType="string"==typeof e?e:s,i[1]=a;for(var p=2;p{n.d(t,{ZP:()=>i});var r=n(5773),s=(n(7378),n(5318));const o={toc:[]};function i(e){let{components:t,...n}=e;return(0,s.kt)("wrapper",(0,r.Z)({},o,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}i.isMDXComponent=!0},9882:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var r=n(5773),s=(n(7378),n(5318)),o=n(5611);const i={sidebar_position:3,title:"Business Case"},a=void 0,c={unversionedId:"business-case/index",id:"business-case/index",title:"Business Case",description:"",source:"@site/docs/business-case/index.md",sourceDirName:"business-case",slug:"/business-case/",permalink:"/spec-untp/docs/business-case/",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/business-case/index.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,title:"Business Case"},sidebar:"tutorialSidebar",previous:{title:"GS1 Binding",permalink:"/spec-untp/docs/specification/GS1Binding"},next:{title:"For Regulators",permalink:"/spec-untp/docs/business-case/Regulators"}},p={},u=[],l={toc:u};function d(e){let{components:t,...n}=e;return(0,s.kt)("wrapper",(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)(o.ZP,{mdxType:"Disclaimer"}),(0,s.kt)("h1",{id:"business-case"},"Business Case"))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[8155],{5318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(7378);function s(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,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(s[n]=e[n]);return s}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,s=e.mdxType,o=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),d=p(n),m=s,f=d["".concat(c,".").concat(m)]||d[m]||l[m]||o;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function m(e,t){var n=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var o=n.length,i=new Array(o);i[0]=d;var a={};for(var c in t)hasOwnProperty.call(t,c)&&(a[c]=t[c]);a.originalType=e,a.mdxType="string"==typeof e?e:s,i[1]=a;for(var p=2;p{n.d(t,{ZP:()=>i});var r=n(5773),s=(n(7378),n(5318));const o={toc:[]};function i(e){let{components:t,...n}=e;return(0,s.kt)("wrapper",(0,r.Z)({},o,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}i.isMDXComponent=!0},9882:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var r=n(5773),s=(n(7378),n(5318)),o=n(5611);const i={sidebar_position:3,title:"Business Case"},a=void 0,c={unversionedId:"business-case/index",id:"business-case/index",title:"Business Case",description:"",source:"@site/docs/business-case/index.md",sourceDirName:"business-case",slug:"/business-case/",permalink:"/spec-untp/docs/business-case/",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/business-case/index.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,title:"Business Case"},sidebar:"tutorialSidebar",previous:{title:"ESG Rules",permalink:"/spec-untp/docs/specification/Rules"},next:{title:"For Regulators",permalink:"/spec-untp/docs/business-case/Regulators"}},p={},u=[],l={toc:u};function d(e){let{components:t,...n}=e;return(0,s.kt)("wrapper",(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)(o.ZP,{mdxType:"Disclaimer"}),(0,s.kt)("h1",{id:"business-case"},"Business Case"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2505769c.173a9778.js b/assets/js/2505769c.173a9778.js deleted file mode 100644 index 0cbbbf61..00000000 --- a/assets/js/2505769c.173a9778.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[1881],{5318:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>u});var n=a(7378);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),p=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(o.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,d=s(t,["components","mdxType","originalType","parentName"]),m=p(a),u=r,h=m["".concat(o,".").concat(u)]||m[u]||c[u]||i;return a?n.createElement(h,l(l({ref:e},d),{},{components:a})):n.createElement(h,l({ref:e},d))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=m;var s={};for(var o in e)hasOwnProperty.call(e,o)&&(s[o]=e[o]);s.originalType=t,s.mdxType="string"==typeof t?t:r,l[1]=s;for(var p=2;p{a.d(e,{ZP:()=>l});var n=a(5773),r=(a(7378),a(5318));const i={toc:[]};function l(t){let{components:e,...a}=t;return(0,r.kt)("wrapper",(0,n.Z)({},i,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}l.isMDXComponent=!0},514:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>s,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var n=a(5773),r=(a(7378),a(5318)),i=a(5611);const l={sidebar_position:5,title:"Requirements"},s=void 0,o={unversionedId:"about/Requirements",id:"about/Requirements",title:"Requirements",description:"This page provides a summary of the high level business requirements for UNTP, grouped into 7 catgories. Each requirement is linked to the page(s) where the solution to the requirement is defined.",source:"@site/docs/about/Requirements.md",sourceDirName:"about",slug:"/about/Requirements",permalink:"/spec-untp/docs/about/Requirements",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/about/Requirements.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,title:"Requirements"},sidebar:"tutorialSidebar",previous:{title:"Audience, Benefits & Goals",permalink:"/spec-untp/docs/about/Goals"},next:{title:"Governance",permalink:"/spec-untp/docs/about/Governance"}},p={},d=[{value:"Governance Requirements",id:"governance-requirements",level:2},{value:"Architectural Requirements",id:"architectural-requirements",level:2},{value:"Traceability & Transparency Requirements",id:"traceability--transparency-requirements",level:2},{value:"Trust & Integrity Requirements",id:"trust--integrity-requirements",level:2},{value:"Security & Confidentiality Requirements",id:"security--confidentiality-requirements",level:2},{value:"Compatibility & Interoperability Requirements",id:"compatibility--interoperability-requirements",level:2},{value:"Implementation Requirements",id:"implementation-requirements",level:2}],c={toc:d};function m(t){let{components:e,...a}=t;return(0,r.kt)("wrapper",(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)(i.ZP,{mdxType:"Disclaimer"}),(0,r.kt)("h1",{id:"untp-business-requirements"},"UNTP Business Requirements"),(0,r.kt)("p",null,"This page provides a summary of the high level business requirements for UNTP, grouped into 7 catgories. Each requirement is linked to the page(s) where the solution to the requirement is defined. "),(0,r.kt)("h2",{id:"governance-requirements"},"Governance Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is goverened in an open and transparent manner, is freely avaialable to all, and is extensible to meet specific industry and jurisdictional needs. "),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Consensus driven process"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP development MUST me managed via a transparent and consensus-driven process that is open to contributions from all stakeholders - so that implementers can have confidence that the UNTP will meet their requirements."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/about/Governance"},"Governance"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Freely available"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP IP MUST be owned by the UN and be permanently free to access and free to use - so that implementers can have confidence that there will never be any fees for use or IP infringement claims."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/about/Governance"},"Governance"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Backwards compatible"),(0,r.kt)("td",{parentName:"tr",align:null},"New versions of UNTP SHOULD be backwards compatible with earlier versions and each version MUST remain active and supported for a minimum of 2 years - so that implementers can have confidence in the durability of their investment."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/about/Governance"},"Governance"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Open source"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP implementation tools including reference implementations and test services MUST be available under open source and royalty free licensing - so that implementers can confidently use the tools to minimise their own implementation costs"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/"},"Tools & Support"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Extensible"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a non-breaking extensions methodology - so that UNTP can be extended to meet specific jurisdictional or industry requirements and so that implementers of a registered extension can be confident that their implementation is interoperable with UNTP core."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Reusable extensions"),(0,r.kt)("td",{parentName:"tr",align:null},"Industry and/or jurisdictional extensions to the UNTP SHOULD also be governed via an open process and released under royalty free license terms - so that implementers of extensions can have same fees & IP confidence as with UNTP core."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Implementation pledge"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide a mechanism for implementers to pledge their support and to register their implementations - so that implementers can choose to register both their sustainability commitment and conformant solutions for discovery by a global community of users and/or customers."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/implementations/"},"Implementations"))))),(0,r.kt)("h2",{id:"architectural-requirements"},"Architectural Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is scalable enough to achieve global implementations at a volume of global trade that is sufficient ot have a material impact on greenwashing - by building on top of existing industry systems and practices and using the simplest possible framework that meets the goals."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Protocol over platform"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a standard protocol that is easily implemented by any business software system - so that every supply chain actor can continue to use their preferred business software without any need for upstream or downstream actors to agree on the use of shared platforms."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Decentralisation"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a decentralised protocol where data is stored wherever the owner chooses - so that supply chain actors retain control of their data and are able to monetise their evidence of sustainable behaviour."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Natural business"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST accommodate the continued use of existing natural business, product, batch, and shipment identifiers - so that UNTP implementation imposes minimal disruption to existing business processes and can leverage existing business and product registers."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Identifiers"},"Identifiers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Technical maturity"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST accommodate varying levels of technical maturity from (and including) paper based documents up to fully digitalised systems - so that every implementers of UNTP can confidently proceed without dependency on the capability or readiness of upstream or downstream actors."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DataCarriers"},"Data Carriers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Simplest possible core"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST prioritise simplicity by focussing on only the minimum specification that represents the common core needs across different jurisdictions and indutries - so that that implementation cost is minimised and interoperability is maximised."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Re-use not re-invent"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST re-use (rather than re-invent) existing standards (e.g. W3C Verifiable Credentials, GS1 EPCIS, UN vocabularies, etc) wherever they are fit for purpose - so that interoperability is maximised and existing investments in software components is re-used."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Rules as code"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a mechanism to simplify the compliance assessment of entities, products, and processes against the fast growing set of ESG standards and regulations - so that any actor's investment in sustainable practices is easily tested against multiple criteria."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Rules"},"ESG Rules"))))),(0,r.kt)("h2",{id:"traceability--transparency-requirements"},"Traceability & Transparency Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP provides the traceability and transparency data needed for each supply chain actor to confidently meet their due diligence obligations and customer epxections for verifiable evidence of sustainable practices."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Data carriers"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define consistent methods for the discovery of data about products from both new and existing data carriers such as ID bar codes, 2D matrix, QR codes, and RFID tags - so that any party that has only a product batch ID or goods shipment ID can find ESG data about that product or shipment."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DataCarriers"},"Data Carriers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.02"),(0,r.kt)("td",{parentName:"tr",align:null},"item/batch granularity"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide data at the granularity of the individual items or batch in a shipment so that the downstream actor can easily aggregate their material inputs (e.g. scope 3 emissions) into their own ESG performance data."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.03"),(0,r.kt)("td",{parentName:"tr",align:null},"end-to-end traceability"),(0,r.kt)("td",{parentName:"tr",align:null},"Subject to privacy & confidentiality constraints, the UNTP traceability model MUST be able to trace value chains from finished product to raw materials through any number of commercial boundaries (sale of goods), or logistics boundaries (consolidation & deconsolidation), and process boundaries (manufacturing transformation of inputs to different outputs) so that the provenance and ESG footprint of goods can be verified as the sum of component parts."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/TraceabilityEvents"},"Traceability Events"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Sustainability data"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide a simple and consistent way to access and verify all available sustainability metrics (eg carbon intensity, deforestation, water usage, fair work, etc) about a given product item or batch - so that product buyers can easily meet their sustainability and due diligence obligations"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/ConformityCredential"},"Conformity Credential"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Provenance data"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide verifiable provenance information (raw material content and manufacturing origin countries) about a given product item or batch - so that product buyers can easily meet their supply chain resilience and goods origin controls."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"),", Guarantee of Origin")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Circularity data"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide a simple mechanism to access circularity data including both recycled content metrics as well as end-of-life recycling information - so that product buyers can meet their recycled content goals and recyclers can optimise their recycling processes."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"),", Circularity Data")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.07"),(0,r.kt)("td",{parentName:"tr",align:null},"ESG Vocabulary"),(0,r.kt)("td",{parentName:"tr",align:null},"Given the volume and diversity of ESG standards and regulations, the UNTP MUST define a simple and scalable mechanism to define both the precise meaning and general category of ESG claims - so that downstream actors can map either the specific criteria or the general category of ESG data confidently."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"))))),(0,r.kt)("h2",{id:"trust--integrity-requirements"},"Trust & Integrity Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP provides data that can be be trusted and is resilient to several greenwashing attack vectors."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Trust anchors"),(0,r.kt)("td",{parentName:"tr",align:null},'Trust in truth of sustainability claims can be established by third party audits, or by attestation of trusted authorities, or by long standing evidence of sustainable behaviour. The UNTP MUST provide a mechanism to link ESG claims to any or all of these "trust anchors" so that downstream actors can have confidence that claimed ESG performance is true.'),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/TrustAnchors"},"Trust Anchors"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Identity integrity"),(0,r.kt)("td",{parentName:"tr",align:null},"Identifiers of businesses, locations, products, and shipments underpin the UNTP. Therefore, the UNTP MUST provide a mechanism to verify that ESG claims made about products or locations or entities are made by actors that are genuine owners of the identifiers or their authorised delegates - so that downstream actors can be sure that ESG claims are made by parties genuinely authorised to do so."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Identifiers"},"Identifiers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Accreditation"),(0,r.kt)("td",{parentName:"tr",align:null},"Third party audits and assessments add trust. But if the verifier does not know the auditor / certifier then there's a risk that define a mechanism to link third party certifiers to the accreditation authrority under which they perform their work so that downstream actors can trust the certificates even when they do not know the certifiers."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/ConformityCredential"},"Conformity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Verification of documents"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define standard and interoperable mechanisms to prevent spoofing or tampering of any documents issued by upstream actors so that downstream actors can be confident that ESG credentials were genuinely issued by the claimed identity and have not been altered in any way."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Verification of graphs"),(0,r.kt)("td",{parentName:"tr",align:null},"Evidence of ESG performance in supply chains is not concentrated in one document but rather is distributed along the entire value chain. The UNTP MUST define a mechanism to describe and verify the collection of evidence that is available from chains of linked documents so that downstream actors can verify the full ESG footprint and provenance data for any shipment."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/TrustGraphs"},"Trust graphs"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Product substitution"),(0,r.kt)("td",{parentName:"tr",align:null},"As the brand value of verifiably sustainable products increases, so does the incentive to make fake products and attach them to genuinely verifiable sustainability evidence. The UNTP MUST define an anti-counterfeiting mechanism so that downstream actors can confirm that they have purchased genuine goods."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Counterfeiting"},"Anti-counterfeiting"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Mass balance fraud"),(0,r.kt)("td",{parentName:"tr",align:null},"Mass balance fraud occurs when a supply chain actor blends sustainable materials with cheaper non-sustainable materials as inputs to a manufacturing process and then claims that the manufactured product is 100% sustainable. The UNTP MUST define mechanisms to detect mass balance fraud so that downstream actors can be confident of the integrity of their sustainable supply chain and the value of sustainable products is maintained."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/MassBalance"},"Mass balance"))))),(0,r.kt)("h2",{id:"security--confidentiality-requirements"},"Security & Confidentiality Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP provides mechanisms to protect the security and confidentiality of supply chain data, allowing each actor to make their own choices about the balance between trceability & transparency."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Transparency vs confidentiality"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST allow every supply chain actor to choose their own balance between transparency and confidentiality - so that each actor can choose to share only what delivers value whilst protecting the information they deem confidential."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Confidentiality"},"Confidentiality"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Multi-layered security"),(0,r.kt)("td",{parentName:"tr",align:null},"Information about products have a range of commercial sensitivity from public data to highly confidential data. The UNTP MUST provide a range of data protection mechanisms that can be applied appropriately so that supply chain actors can choose the right protection level for specific data sets."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Confidentiality"},"Confidentiality"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Selective redaction"),(0,r.kt)("td",{parentName:"tr",align:null},"ESG data and credentials from sellers may contain data that buyers do not want to pass on to their own customers. The UNTP MUST define a selective redaction method that allows any supply chain actor to redact information (without affecting the cryptographic integrity) from credentials received from upstream suppliers before passing it on to their downstream customers - so that verifiable ESG data can be passed on without leaking commercially sensitive data."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Confidentiality"},"Confidentiality"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Revocation"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide a mechanism to revoke previously issued conformity certificates when an actor is found to be non-compliant so that downstream actors can be confident of the currency of the ESG assessments they receive."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Availability"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST define a mechanism for high availability and long term durability of ESG evidence - so that data can be accessed by verifiers even when source systems are down, and so that data for long-lifetime products such as batteries or building materials can be accessed long after source systems are retired."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Cryptography"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST support flexibility in cryptographic methods so that new algorithms can be supported as they emerge to meet new challenges such as quantum computing."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Key management"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide mechanisms for the discovery of public keys, the protection of private keys, and the rotation of key pairs so that keys remain secure and can be easily chained if compromised."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))))),(0,r.kt)("h2",{id:"compatibility--interoperability-requirements"},"Compatibility & Interoperability Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is compatible with existing standards for technology, ESG criteria, and supply chain practices so that implementers can maximise the leverage of existing investments."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.01"),(0,r.kt)("td",{parentName:"tr",align:null},"National regulations compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP conformant data SHOULD be straightforward to map to national ESG regulations so that it can usefully provide the upstream B2B ESG evidence to support national B2C product conformance."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Entity ESG reporting compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP conformant ESG data about products & shipments MUST be straightforward to map to entity level ESG reporting obligations so that UNTP transaction level ESG data can be easily aggregated to inform annual ESG reporting that conforms to standards like IFRS sustainability."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.03"),(0,r.kt)("td",{parentName:"tr",align:null},"ESG standards compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST be able to support ESG claims against criteria from any ESG standard and MUST provide a mechanism to map those claims to a common vocabulary - so that implementers can align with standards of their choice and verifiers can make sense of the claims even when they are unfamiliar with specific standard criteria"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Rules"},"ESG Rules"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Credential interoperability (VCs)"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide the flexibility to support multiple credential standards such as W3C Verifiable Credentials and Hyperledger Airies Anoncreds - so that ESG data along a value chain can be verified even when different credential standards are adopted by different actors along the value chain."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Blockchain"),(0,r.kt)("td",{parentName:"tr",align:null},"Whilst some implementers MAY choose blockchain technologoes to underpin their solutions, the UNTP MUST NOT require the use of blockchain for conformant implementations - so that implementers that wish to avoid the costs and complexity of blockahin technologies are free to do so."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.06"),(0,r.kt)("td",{parentName:"tr",align:null},"GS1 compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"GS1 identifiers and standards are ubiquitous at the downstream consumer goods end of most supply chains. The UNTP MUST be compatible with GS1 standards but MUST NOT require the use of GS1 standards - so that supply chain actors that are already invested in GS1 identifiers and standards can maintain and build upon that investment"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/GS1Binding"},"GS1 Profile"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Other registry compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a mechanism to support existing identity registers so that implementers can continue to leverage existing business identifiers such as tax registration numbers, cadastral lot numbers, shipping container numbers, and so on under UNTP"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Identifiers"},"Identifiers"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))))),(0,r.kt)("h2",{id:"implementation-requirements"},"Implementation Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is implementable at the lowest possible cost, and that early implementers gain a marketing advantage, and that the impact of implementations can be tracked."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Making a business case"),(0,r.kt)("td",{parentName:"tr",align:null},"Every UNTP implementer will need confidence that the benefots of their implementation outweighs the cost. UNTP SHOULD provide a set of business case templates so that each stakholder type can fast-track their decision to proceed"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/business-case/"},"Business Case"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Open source tools"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST include an open source reference implementation that any supply chain actor can embed into their solutions to help fast-track their implementation."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/Tools"},"Tools"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Conformity testing"),(0,r.kt)("td",{parentName:"tr",align:null},"the UNTP MUST include a conformance test suite and test service so that each implementer can self-assess their conformance and be confidenet that their implementations will be interoperable."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/TestCases"},"Test cases"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/TestService"},"Test service"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Implementation Support"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide mechanisms for implementers to get either community support or professional support so that they can minimise their implementation risk."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/Support"},"Support"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Tracking implementations"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide a mechanism to track implementations so that uptake and impact can be measured and so that early implementers can publicise their solutions."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/implementations/"},"Implementations"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Tracking extensions"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide a mechansim to track and publish industry & jurisdictional extensions so that new extensions can find and re-use relevant work."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Greenwashing KPIs"),(0,r.kt)("td",{parentName:"tr",align:null},"Although uptake is a simple and concrete success measure, the real purpose of UNTP is to lift the value of sustainable practices by countering greenwashing. Therefore, UNTP MUST develop a set of greenwashing KPIs that can be tracked to assess whether UNTP is having a material impact."),(0,r.kt)("td",{parentName:"tr",align:null},"Greenwashing KPIs")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2505769c.6f3d5e52.js b/assets/js/2505769c.6f3d5e52.js new file mode 100644 index 00000000..e0ad0ba0 --- /dev/null +++ b/assets/js/2505769c.6f3d5e52.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[1881],{5318:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>u});var n=a(7378);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),p=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(o.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,d=s(t,["components","mdxType","originalType","parentName"]),m=p(a),u=r,h=m["".concat(o,".").concat(u)]||m[u]||c[u]||i;return a?n.createElement(h,l(l({ref:e},d),{},{components:a})):n.createElement(h,l({ref:e},d))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=m;var s={};for(var o in e)hasOwnProperty.call(e,o)&&(s[o]=e[o]);s.originalType=t,s.mdxType="string"==typeof t?t:r,l[1]=s;for(var p=2;p{a.d(e,{ZP:()=>l});var n=a(5773),r=(a(7378),a(5318));const i={toc:[]};function l(t){let{components:e,...a}=t;return(0,r.kt)("wrapper",(0,n.Z)({},i,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}l.isMDXComponent=!0},514:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>s,default:()=>m,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var n=a(5773),r=(a(7378),a(5318)),i=a(5611);const l={sidebar_position:5,title:"Requirements"},s=void 0,o={unversionedId:"about/Requirements",id:"about/Requirements",title:"Requirements",description:"This page provides a summary of the high level business requirements for UNTP, grouped into 7 catgories. Each requirement is linked to the page(s) where the solution to the requirement is defined.",source:"@site/docs/about/Requirements.md",sourceDirName:"about",slug:"/about/Requirements",permalink:"/spec-untp/docs/about/Requirements",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/about/Requirements.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,title:"Requirements"},sidebar:"tutorialSidebar",previous:{title:"Audience, Benefits & Goals",permalink:"/spec-untp/docs/about/Goals"},next:{title:"Governance",permalink:"/spec-untp/docs/about/Governance"}},p={},d=[{value:"Governance Requirements",id:"governance-requirements",level:2},{value:"Architectural Requirements",id:"architectural-requirements",level:2},{value:"Traceability & Transparency Requirements",id:"traceability--transparency-requirements",level:2},{value:"Trust & Integrity Requirements",id:"trust--integrity-requirements",level:2},{value:"Security & Confidentiality Requirements",id:"security--confidentiality-requirements",level:2},{value:"Compatibility & Interoperability Requirements",id:"compatibility--interoperability-requirements",level:2},{value:"Implementation Requirements",id:"implementation-requirements",level:2}],c={toc:d};function m(t){let{components:e,...a}=t;return(0,r.kt)("wrapper",(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)(i.ZP,{mdxType:"Disclaimer"}),(0,r.kt)("h1",{id:"untp-business-requirements"},"UNTP Business Requirements"),(0,r.kt)("p",null,"This page provides a summary of the high level business requirements for UNTP, grouped into 7 catgories. Each requirement is linked to the page(s) where the solution to the requirement is defined."),(0,r.kt)("h2",{id:"governance-requirements"},"Governance Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is goverened in an open and transparent manner, is freely avaialable to all, and is extensible to meet specific industry and jurisdictional needs."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Consensus driven process"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP development MUST me managed via a transparent and consensus-driven process that is open to contributions from all stakeholders - so that implementers can have confidence that the UNTP will meet their requirements."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/about/Governance"},"Governance"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Freely available"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP IP MUST be owned by the UN and be permanently free to access and free to use - so that implementers can have confidence that there will never be any fees for use or IP infringement claims."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/about/Governance"},"Governance"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Backwards compatible"),(0,r.kt)("td",{parentName:"tr",align:null},"New versions of UNTP SHOULD be backwards compatible with earlier versions and each version MUST remain active and supported for a minimum of 2 years - so that implementers can have confidence in the durability of their investment."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/about/Governance"},"Governance"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Open source"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP implementation tools including reference implementations and test services MUST be available under open source and royalty free licensing - so that implementers can confidently use the tools to minimise their own implementation costs"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/"},"Tools & Support"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Extensible"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a non-breaking extensions methodology - so that UNTP can be extended to meet specific jurisdictional or industry requirements and so that implementers of a registered extension can be confident that their implementation is interoperable with UNTP core."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Reusable extensions"),(0,r.kt)("td",{parentName:"tr",align:null},"Industry and/or jurisdictional extensions to the UNTP SHOULD also be governed via an open process and released under royalty free license terms - so that implementers of extensions can have same fees & IP confidence as with UNTP core."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"GV.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Implementation pledge"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide a mechanism for implementers to pledge their support and to register their implementations - so that implementers can choose to register both their sustainability commitment and conformant solutions for discovery by a global community of users and/or customers."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/implementations/"},"Implementations"))))),(0,r.kt)("h2",{id:"architectural-requirements"},"Architectural Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is scalable enough to achieve global implementations at a volume of global trade that is sufficient ot have a material impact on greenwashing - by building on top of existing industry systems and practices and using the simplest possible framework that meets the goals."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Protocol over platform"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a standard protocol that is easily implemented by any business software system - so that every supply chain actor can continue to use their preferred business software without any need for upstream or downstream actors to agree on the use of shared platforms."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Decentralisation"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a decentralised protocol where data is stored wherever the owner chooses - so that supply chain actors retain control of their data and are able to monetise their evidence of sustainable behaviour."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Natural business"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST accommodate the continued use of existing natural business, product, batch, and shipment identifiers - so that UNTP implementation imposes minimal disruption to existing business processes and can leverage existing business and product registers."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Identifiers"},"Identifiers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Technical maturity"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST accommodate varying levels of technical maturity from (and including) paper based documents up to fully digitalised systems - so that every implementers of UNTP can confidently proceed without dependency on the capability or readiness of upstream or downstream actors."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DataCarriers"},"Data Carriers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Simplest possible core"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST prioritise simplicity by focussing on only the minimum specification that represents the common core needs across different jurisdictions and indutries - so that that implementation cost is minimised and interoperability is maximised."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AR.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Re-use not re-invent"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST re-use (rather than re-invent) existing standards (e.g. W3C Verifiable Credentials, GS1 EPCIS, UN vocabularies, etc) wherever they are fit for purpose - so that interoperability is maximised and existing investments in software components is re-used."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Architecture"},"Architecture"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Rules as code"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a mechanism to simplify the compliance assessment of entities, products, and processes against the fast growing set of ESG standards and regulations - so that any actor's investment in sustainable practices is easily tested against multiple criteria."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Rules"},"ESG Rules"))))),(0,r.kt)("h2",{id:"traceability--transparency-requirements"},"Traceability & Transparency Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP provides the traceability and transparency data needed for each supply chain actor to confidently meet their due diligence obligations and customer epxections for verifiable evidence of sustainable practices."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Data carriers"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define consistent methods for the discovery of data about products from both new and existing data carriers such as ID bar codes, 2D matrix, QR codes, and RFID tags - so that any party that has only a product batch ID or goods shipment ID can find ESG data about that product or shipment."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DataCarriers"},"Data Carriers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.02"),(0,r.kt)("td",{parentName:"tr",align:null},"item/batch granularity"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide data at the granularity of the individual items or batch in a shipment so that the downstream actor can easily aggregate their material inputs (e.g. scope 3 emissions) into their own ESG performance data."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.03"),(0,r.kt)("td",{parentName:"tr",align:null},"end-to-end traceability"),(0,r.kt)("td",{parentName:"tr",align:null},"Subject to privacy & confidentiality constraints, the UNTP traceability model MUST be able to trace value chains from finished product to raw materials through any number of commercial boundaries (sale of goods), or logistics boundaries (consolidation & deconsolidation), and process boundaries (manufacturing transformation of inputs to different outputs) so that the provenance and ESG footprint of goods can be verified as the sum of component parts."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/TraceabilityEvents"},"Traceability Events"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Sustainability data"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide a simple and consistent way to access and verify all available sustainability metrics (eg carbon intensity, deforestation, water usage, fair work, etc) about a given product item or batch - so that product buyers can easily meet their sustainability and due diligence obligations"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/ConformityCredential"},"Conformity Credential"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Provenance data"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide verifiable provenance information (raw material content and manufacturing origin countries) about a given product item or batch - so that product buyers can easily meet their supply chain resilience and goods origin controls."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"),", Guarantee of Origin")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Circularity data"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide a simple mechanism to access circularity data including both recycled content metrics as well as end-of-life recycling information - so that product buyers can meet their recycled content goals and recyclers can optimise their recycling processes."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/DigitalProductPassport"},"Digital Product Passport"),", Circularity Data")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TT.07"),(0,r.kt)("td",{parentName:"tr",align:null},"ESG Vocabulary"),(0,r.kt)("td",{parentName:"tr",align:null},"Given the volume and diversity of ESG standards and regulations, the UNTP MUST define a simple and scalable mechanism to define both the precise meaning and general category of ESG claims - so that downstream actors can map either the specific criteria or the general category of ESG data confidently."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"))))),(0,r.kt)("h2",{id:"trust--integrity-requirements"},"Trust & Integrity Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP provides data that can be be trusted and is resilient to several greenwashing attack vectors."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Trust anchors"),(0,r.kt)("td",{parentName:"tr",align:null},'Trust in truth of sustainability claims can be established by third party audits, or by attestation of trusted authorities, or by long standing evidence of sustainable behaviour. The UNTP MUST provide a mechanism to link ESG claims to any or all of these "trust anchors" so that downstream actors can have confidence that claimed ESG performance is true.'),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/TrustAnchors"},"Trust Anchors"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Identity integrity"),(0,r.kt)("td",{parentName:"tr",align:null},"Identifiers of businesses, locations, products, and shipments underpin the UNTP. Therefore, the UNTP MUST provide a mechanism to verify that ESG claims made about products or locations or entities are made by actors that are genuine owners of the identifiers or their authorised delegates - so that downstream actors can be sure that ESG claims are made by parties genuinely authorised to do so."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Identifiers"},"Identifiers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Accreditation"),(0,r.kt)("td",{parentName:"tr",align:null},"Third party audits and assessments add trust. But if the verifier does not know the auditor / certifier then there's a risk that define a mechanism to link third party certifiers to the accreditation authrority under which they perform their work so that downstream actors can trust the certificates even when they do not know the certifiers."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/ConformityCredential"},"Conformity"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Verification of documents"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define standard and interoperable mechanisms to prevent spoofing or tampering of any documents issued by upstream actors so that downstream actors can be confident that ESG credentials were genuinely issued by the claimed identity and have not been altered in any way."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Verification of graphs"),(0,r.kt)("td",{parentName:"tr",align:null},"Evidence of ESG performance in supply chains is not concentrated in one document but rather is distributed along the entire value chain. The UNTP MUST define a mechanism to describe and verify the collection of evidence that is available from chains of linked documents so that downstream actors can verify the full ESG footprint and provenance data for any shipment."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/TrustGraphs"},"Trust graphs"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Product substitution"),(0,r.kt)("td",{parentName:"tr",align:null},"As the brand value of verifiably sustainable products increases, so does the incentive to make fake products and attach them to genuinely verifiable sustainability evidence. The UNTP MUST define an anti-counterfeiting mechanism so that downstream actors can confirm that they have purchased genuine goods."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Counterfeiting"},"Anti-counterfeiting"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"TI.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Mass balance fraud"),(0,r.kt)("td",{parentName:"tr",align:null},"Mass balance fraud occurs when a supply chain actor blends sustainable materials with cheaper non-sustainable materials as inputs to a manufacturing process and then claims that the manufactured product is 100% sustainable. The UNTP MUST define mechanisms to detect mass balance fraud so that downstream actors can be confident of the integrity of their sustainable supply chain and the value of sustainable products is maintained."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/MassBalance"},"Mass balance"))))),(0,r.kt)("h2",{id:"security--confidentiality-requirements"},"Security & Confidentiality Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP provides mechanisms to protect the security and confidentiality of supply chain data, allowing each actor to make their own choices about the balance between trceability & transparency."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Transparency vs confidentiality"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST allow every supply chain actor to choose their own balance between transparency and confidentiality - so that each actor can choose to share only what delivers value whilst protecting the information they deem confidential."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Confidentiality"},"Confidentiality"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Multi-layered security"),(0,r.kt)("td",{parentName:"tr",align:null},"Information about products have a range of commercial sensitivity from public data to highly confidential data. The UNTP MUST provide a range of data protection mechanisms that can be applied appropriately so that supply chain actors can choose the right protection level for specific data sets."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Confidentiality"},"Confidentiality"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Selective redaction"),(0,r.kt)("td",{parentName:"tr",align:null},"ESG data and credentials from sellers may contain data that buyers do not want to pass on to their own customers. The UNTP MUST define a selective redaction method that allows any supply chain actor to redact information (without affecting the cryptographic integrity) from credentials received from upstream suppliers before passing it on to their downstream customers - so that verifiable ESG data can be passed on without leaking commercially sensitive data."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Confidentiality"},"Confidentiality"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Revocation"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide a mechanism to revoke previously issued conformity certificates when an actor is found to be non-compliant so that downstream actors can be confident of the currency of the ESG assessments they receive."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Availability"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST define a mechanism for high availability and long term durability of ESG evidence - so that data can be accessed by verifiers even when source systems are down, and so that data for long-lifetime products such as batteries or building materials can be accessed long after source systems are retired."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Cryptography"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST support flexibility in cryptographic methods so that new algorithms can be supported as they emerge to meet new challenges such as quantum computing."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"SC.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Key management"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide mechanisms for the discovery of public keys, the protection of private keys, and the rotation of key pairs so that keys remain secure and can be easily chained if compromised."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/VerifiableCredentials"},"Verifiable Credentials"))))),(0,r.kt)("h2",{id:"compatibility--interoperability-requirements"},"Compatibility & Interoperability Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is compatible with existing standards for technology, ESG criteria, and supply chain practices so that implementers can maximise the leverage of existing investments."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.01"),(0,r.kt)("td",{parentName:"tr",align:null},"National regulations compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP conformant data SHOULD be straightforward to map to national ESG regulations so that it can usefully provide the upstream B2B ESG evidence to support national B2C product conformance."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Entity ESG reporting compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP conformant ESG data about products & shipments MUST be straightforward to map to entity level ESG reporting obligations so that UNTP transaction level ESG data can be easily aggregated to inform annual ESG reporting that conforms to standards like IFRS sustainability."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.03"),(0,r.kt)("td",{parentName:"tr",align:null},"ESG standards compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST be able to support ESG claims against criteria from any ESG standard and MUST provide a mechanism to map those claims to a common vocabulary - so that implementers can align with standards of their choice and verifiers can make sense of the claims even when they are unfamiliar with specific standard criteria"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Vocabularies"},"Vocabulary"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Rules"},"ESG Rules"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Credential interoperability (VCs)"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST provide the flexibility to support multiple credential standards such as W3C Verifiable Credentials and Hyperledger Airies Anoncreds - so that ESG data along a value chain can be verified even when different credential standards are adopted by different actors along the value chain."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Blockchain"),(0,r.kt)("td",{parentName:"tr",align:null},"Whilst some implementers MAY choose blockchain technologoes to underpin their solutions, the UNTP MUST NOT require the use of blockchain for conformant implementations - so that implementers that wish to avoid the costs and complexity of blockahin technologies are free to do so."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.06"),(0,r.kt)("td",{parentName:"tr",align:null},"GS1 compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"GS1 identifiers and standards are ubiquitous at the downstream consumer goods end of most supply chains. The UNTP MUST be compatible with GS1 standards but MUST NOT require the use of GS1 standards - so that supply chain actors that are already invested in GS1 identifiers and standards can maintain and build upon that investment"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"CI.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Other registry compatibility"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST define a mechanism to support existing identity registers so that implementers can continue to leverage existing business identifiers such as tax registration numbers, cadastral lot numbers, shipping container numbers, and so on under UNTP"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/specification/Identifiers"},"Identifiers"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))))),(0,r.kt)("h2",{id:"implementation-requirements"},"Implementation Requirements"),(0,r.kt)("p",null,"This set of requirements aim to ensure that UNTP is implementable at the lowest possible cost, and that early implementers gain a marketing advantage, and that the impact of implementations can be tracked."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"ID"),(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Requirement Statement"),(0,r.kt)("th",{parentName:"tr",align:null},"Solution Mapping"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.01"),(0,r.kt)("td",{parentName:"tr",align:null},"Making a business case"),(0,r.kt)("td",{parentName:"tr",align:null},"Every UNTP implementer will need confidence that the benefots of their implementation outweighs the cost. UNTP SHOULD provide a set of business case templates so that each stakholder type can fast-track their decision to proceed"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/business-case/"},"Business Case"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.02"),(0,r.kt)("td",{parentName:"tr",align:null},"Open source tools"),(0,r.kt)("td",{parentName:"tr",align:null},"The UNTP MUST include an open source reference implementation that any supply chain actor can embed into their solutions to help fast-track their implementation."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/Tools"},"Tools"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.03"),(0,r.kt)("td",{parentName:"tr",align:null},"Conformity testing"),(0,r.kt)("td",{parentName:"tr",align:null},"the UNTP MUST include a conformance test suite and test service so that each implementer can self-assess their conformance and be confidenet that their implementations will be interoperable."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/TestCases"},"Test cases"),", ",(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/TestService"},"Test service"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.04"),(0,r.kt)("td",{parentName:"tr",align:null},"Implementation Support"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide mechanisms for implementers to get either community support or professional support so that they can minimise their implementation risk."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/tools-and-support/Support"},"Support"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.05"),(0,r.kt)("td",{parentName:"tr",align:null},"Tracking implementations"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide a mechanism to track implementations so that uptake and impact can be measured and so that early implementers can publicise their solutions."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/implementations/"},"Implementations"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.06"),(0,r.kt)("td",{parentName:"tr",align:null},"Tracking extensions"),(0,r.kt)("td",{parentName:"tr",align:null},"UNTP MUST provide a mechansim to track and publish industry & jurisdictional extensions so that new extensions can find and re-use relevant work."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"/spec-untp/docs/extensions/"},"Extensions"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"IM.07"),(0,r.kt)("td",{parentName:"tr",align:null},"Greenwashing KPIs"),(0,r.kt)("td",{parentName:"tr",align:null},"Although uptake is a simple and concrete success measure, the real purpose of UNTP is to lift the value of sustainable practices by countering greenwashing. Therefore, UNTP MUST develop a set of greenwashing KPIs that can be tracked to assess whether UNTP is having a material impact."),(0,r.kt)("td",{parentName:"tr",align:null},"Greenwashing KPIs")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3551f6a5.2afd14ba.js b/assets/js/3551f6a5.2afd14ba.js deleted file mode 100644 index 81964ec4..00000000 --- a/assets/js/3551f6a5.2afd14ba.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[2682],{5318:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(7378);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=c(a),m=n,h=p["".concat(l,".").concat(m)]||p[m]||u[m]||i;return a?r.createElement(h,s(s({ref:t},d),{},{components:a})):r.createElement(h,s({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var c=2;c{a.d(t,{ZP:()=>s});var r=a(5773),n=(a(7378),a(5318));const i={toc:[]};function s(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,r.Z)({},i,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}s.isMDXComponent=!0},965:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var r=a(5773),n=(a(7378),a(5318)),i=a(5611);const s={sidebar_position:2,title:"Audience, Benefits & Goals"},o=void 0,l={unversionedId:"about/Goals",id:"about/Goals",title:"Audience, Benefits & Goals",description:"The primary goal of UNTP is to make significant reductions in the incidence of greenwashing by giving unsustainable behaviour nowhere to hide. This will also uplift the value of legitimate ESG credentials from supply chain actors that have implemented sustainable practices. UNTP will have achieved it's purpose when",source:"@site/docs/about/Goals.md",sourceDirName:"about",slug:"/about/Goals",permalink:"/spec-untp/docs/about/Goals",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/about/Goals.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,title:"Audience, Benefits & Goals"},sidebar:"tutorialSidebar",previous:{title:"About the UNTP",permalink:"/spec-untp/docs/about/"},next:{title:"Requirements",permalink:"/spec-untp/docs/about/Requirements"}},c={},d=[{value:"Regulators",id:"regulators",level:2},{value:"ESG Standards Organisations",id:"esg-standards-organisations",level:2},{value:"Accreditation & Certification Organisations",id:"accreditation--certification-organisations",level:2},{value:"Primary Producers & Manufacturers",id:"primary-producers--manufacturers",level:2},{value:"Brands & Retailers",id:"brands--retailers",level:2},{value:"Recyclers & Refurbishers",id:"recyclers--refurbishers",level:2},{value:"Environmental & Human Welfare Organisations",id:"environmental--human-welfare-organisations",level:2},{value:"Consumers",id:"consumers",level:2},{value:"Transport & Logistics Providers",id:"transport--logistics-providers",level:2},{value:"Financial Institutions",id:"financial-institutions",level:2},{value:"Industry Member Associations",id:"industry-member-associations",level:2},{value:"Software Developers",id:"software-developers",level:2},{value:"Service Providers",id:"service-providers",level:2}],u={toc:d};function p(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)(i.ZP,{mdxType:"Disclaimer"}),(0,n.kt)("h1",{id:"goals"},"Goals"),(0,n.kt)("p",null,"The primary goal of UNTP is to make significant reductions in the incidence of greenwashing by giving unsustainable behaviour nowhere to hide. This will also uplift the value of legitimate ESG credentials from supply chain actors that have implemented sustainable practices. UNTP will have achieved it's purpose when"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Most supply chain shipments are accompanied by verifiable ESG performance data."),(0,n.kt)("li",{parentName:"ul"},"Greenwashing is a niche activity that is easily detected and quickly penalised by markets and regulators."),(0,n.kt)("li",{parentName:"ul"},"Products with the best sustainability characteristics enjoy the greatest market access and price uplift. ")),(0,n.kt)("h1",{id:"target-audience--benefits"},"Target Audience & Benefits"),(0,n.kt)("p",null,"All stakeholders in the global supply chain have a role to play and benefits to realise through implementation of the UNTP. As explained in the ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/specification/Architecture"},"Architecture Overview"),", the UNTP is a decentralised architecture where actors can be issuers, or subjects, or verifiers of digital credentials. In many cases, actors will be issuers of some credentials, subjects of others, and verifiers of others. Therefore, the stakeholder roles and benefits described here are separated into the issuer, subject, and verifier roles as appropriate."),(0,n.kt)("h2",{id:"regulators"},"Regulators"),(0,n.kt)("p",null,"Regulators define rules, issue permissions, and manage compliance. By implementing UNTP, regulators will uplift the value of the permissions they issue and improve the efficiency and integrity of compliance operations."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The primary role of regulators as ",(0,n.kt)("strong",{parentName:"li"},"issuers")," is as a ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustAnchors"},"trust anchor"),". When identity credentials such as business registration certificates are issued as digital verifiable credentials according to UNTP then the subjects of those credentials (trading businesses) can add strong verifiable identity to their supply chain transactions. Verifiable identity can facilitate green-lane pre-clearance at import border and higher confidence lending from financial institutions. Similarly, when ESG permits and certificates that demonstrate compliance with domestic regulations are issued digitally, then traders can also attach that evidence to their transactions. In short, when regulators act as digital trust anchors, they will be uplifting their balance of trade by improving access to export markets and trade finance for their traders."),(0,n.kt)("li",{parentName:"ul"},"As ",(0,n.kt)("strong",{parentName:"li"},"verifiers")," of increasingly transparent supply chain data, regulators can significantly uplift compliance activities. Rather than depend on unverifiable claims in regulatory reports that are occasionally audited at high cost, regulators can confidently automate compliance assessment on most trade transactions, leaving a much smaller volume of trade for manual compliance and enforcement activities. ")),(0,n.kt)("p",null,"Finally, as national authorities increasingly seek to uplift environmental performance through regulatory initiatives such as consumer centric product passports, we recommend that national regulators consider the UNTP as the basis for their national initiatives. By designing national initiatives as ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/extensions/"},"UNTP extensions"),", regulators will not only be able to re-use a rich and tested body of work, but will also reduce compliance costs for their domestic industry because they will be better aligned with international supply chains."),(0,n.kt)("h2",{id:"esg-standards-organisations"},"ESG Standards Organisations"),(0,n.kt)("p",null,"Standards organisations include the national and international standards authorities as well as industry led organisations. There are a wide variety of governance arrangements in place that impact the legitimacy and value of the published standards. Unlike regulators, standards bodies do not manage compliance which can be self-assessed, or third party audited by test & certification bodies. There are hundreds of standards organisations which collectively issue thousands of ESG standards, each with dozens of specific conformity criteria (i.e. the rules). Most of these are published as PDF documents. The key role for standards authorities under UNTP is to make their ESG rules machine readable so that they can be accurately referenced in conformity credentials. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When ESG standards organisations publish their ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Rules"},"ESG criteria as a machine readable vocabulary")," then they are empowering their community of certifiers to issue digital conformity credentials that unambiguously reference the scope of the conformity claims so that the credentials can be digitally verified."),(0,n.kt)("li",{parentName:"ul"},"Standards authorities will generally not be issuers, subjects, or verifiers of digital credentials unless they also act as accreditation authorities for third party certifiers that will make conformity assessments - in which case they will be issuers of accreditation credentials as described in the next paragraph.")),(0,n.kt)("h2",{id:"accreditation--certification-organisations"},"Accreditation & Certification Organisations"),(0,n.kt)("p",null,"There is a very well established ",(0,n.kt)("a",{parentName:"p",href:"https://casco.iso.org"},"global framework for conformity assessment"),' of entities, processes, and products that has been in place for over 50 years. It provides assurance that products sold on the marketplace meet applicable quality, safety or ESG standards. Under the framework, independent third parties (certifiers) assess products against recognised standards and issue conformity certificates. Furthermore, a global network of mutually recognised national accreditation authorities assess the certifiers to ensure that the conformity certificates are issued by suitably qualified organisations. For example, a manufacturer may claim that their product meets a particular environmental standard. You might ask "how do I know that claim is true?" and the answer would be "because a third party tested the product and issued a certificate". You might then ask "yes, but how do I know that the third party can be trusted?" and the answer would be "because they have been accredited by the national accreditation authority". Despite all this, it\'s still a relatively simple process to create realistic looking but fake paper certificates. UNTP provides a standard way to digitally verify this chain of trust that is much harder to fake. UNTP does not demand that every product claim is third-party assessed, nor that every third party certifier is formally accredited, but does make that chain of trust visible where it exists. UNTP also recognises that less formal but still valuable chains of trust can exist - for example a farmer\'s environmental land management claims might be verified by a community organisation that is endorsed by a well-known global environmental organisation. '),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When national accreditation authorities or other well-known and trusted organisations ",(0,n.kt)("strong",{parentName:"li"},"issue")," their accreditations as UNTP standard digital credentials then they are creating a digital ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustAnchors"},"trust anchor")," that empowers verifiers of ESG conformity certificates to decide whether they can be trusted. The ",(0,n.kt)("strong",{parentName:"li"},"subject")," of the accreditation is the third party conformity assessment body. Implementation of UNTP will amplify the value of the accreditation and the brand or 'trust mark' of the accreditation authority."),(0,n.kt)("li",{parentName:"ul"},"When third party conformity assessment bodies (certifiers) ",(0,n.kt)("strong",{parentName:"li"},"issue")," their product ESG certificates as UNTP standard digital credentials then they are empowering verifiers of the ESG certificates to digitally confirm that the certificates are genuine, have not been tampered, and have not been revoked. Furthermore if the digital conformity certificate contains a link to the accreditation credential then the full ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustGraphs"},"digital chain of trust")," is established. Producers, manufacturers, brands & retailers that implement UNTP will also demand digital versions of the conformity credentials that they can attach to their products. Therefore, conformity assessment bodies that can provide UNTP standard digital credentials will be preferred over those that cannot.")),(0,n.kt)("h2",{id:"primary-producers--manufacturers"},"Primary Producers & Manufacturers"),(0,n.kt)("p",null,"Most physical products are made of materials that either grow above the ground or are dug out from below the ground. Primary producers such as farmers and miners represent the starting point for most supply chains. Recyclers are a special case and are treated separately by UNTP because they are both the end and the (re)start of circular supply chains. Manufacturers take raw or recycled materials and produce intermediate components or final products. Primary producers and manufacturers collectively represent the upstream feedstock supply chain for the branded products sold to consumers. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers implement UNTP by ",(0,n.kt)("strong",{parentName:"li"},"issuing")," ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/DigitalProductPassport"},"B2B digital product passports")," (DPP) and ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/DataCarriers"},"linking them")," to every shipment of goods to their customers, then they are simplifying life for their customers by providing data at the right granularity for them to incorporate their inputs such as scope 3 CO2 emissions into their own product environmental footprint. "),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TraceabilityEvents"},"traceability events")," linked to product passports then they are providing provenance evidence that can inform supply chain resilience and preferential treatment decisions by their customers and export market regulators. "),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers link third party issued UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/ConformityCredential"},"conformity credentials")," then they are adding trust to the ESG claims in their DPPs that will uplift the value or market access for their products."),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers ",(0,n.kt)("strong",{parentName:"li"},"issue")," the complete collection of passports, traceability events, and conformity credentials and link them to product shipments then they will significantly uplift value to their downstream customers by empowering them to easily and verifiably meet their own ESG due-diligence obligations. "),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers link their issuer identity to a strong identity credential (such as a government business registration or trademark ownership credential) and implement the UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Counterfeiting"},"anti counterfeiting")," mechanism then they will add strong anti-fraud measures to their products and preserve the value of their sustainability actions.")),(0,n.kt)("p",null,"Producers and manufacturers are themselves ",(0,n.kt)("strong",{parentName:"p"},"verifiers")," of any UNTP credentials linked to their upstream supply chain. The ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/specification/Confidentiality"},"confidentiality measures")," defined by UNTP allow supply chain actors to selectively redact upstream credentials before passing them on to their downstream customers so that ESG evidence can be passed on without revealing commercially sensitive information. "),(0,n.kt)("h2",{id:"brands--retailers"},"Brands & Retailers"),(0,n.kt)("p",null,"Brands and retailers consume products from their upstream producers and manufacturers and sell to the consumer. Whilst it is of course true that some brands are also manufacturers and that some retail is to business rather than consumers, the key distinction that UNTP makes is between B2B activities vs B2C activities. Sales to the consumer market is highly regulated in most economies and some are starting to develop regulations that also require product passports to support informed consumer choice and/or improved recycling processes. Brands and retailers must meet domestic regulations and face scrutiny from an increasingly greenwashing-aware consumer as well as from environmental activist organisations. The potential for reputational damage and high fines for non-compliance present brands and retailers with a strong motivation to ensure that sustainable practices are in place both for themselves and their entire supply chain."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When brands and retailers can ",(0,n.kt)("strong",{parentName:"li"},"verify")," UNTP credentials linked to shipments from their upstream suppliers then they can confidently meet their due-diligence obligations and have the rich and verifiable information necessary to issue any consumer-centric product passports required under domestic regulations."),(0,n.kt)("li",{parentName:"ul"},"UNTP should not conflict with local regulations. When international brands and retailers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/DigitalProductPassport"},"product passports"),", ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/ConformityCredential"},"conformity credentials")," and ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TraceabilityEvents"},"traceability events")," across all markets then they are providing a consistent way for consumers to discover and verify ESG performance and are establishing a strong framework for compliance with any current or emerging domestic regulations."),(0,n.kt)("li",{parentName:"ul"},"When brands and retailers request UNTP credentials from their upstream suppliers then they avoiding the challenges associated with imposing specific traceability software solutions on their supply chain. Instead, they are simply requesting conformance with a common standard, irrespective of software platform."),(0,n.kt)("li",{parentName:"ul"},"When brands and retailers that have already made significant investments in GS1 identifiers and standards implement the UNTP, they can follow the ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/GS1Binding"},"GS1 binding")," to build upon and re-use their existing investments. It should also be noted that UNTP does not impose GS1 solutions on organisations that have not already invested in GS1 standards."),(0,n.kt)("li",{parentName:"ul"},"When brands and retailers link their issuer identity to a strong identity credential (such as a government business registration or trademark ownership credential) and implement the UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Counterfeiting"},"anti counterfeiting")," mechanism then they will add strong anti-fraud measures to their products and preserve the value of their sustainability actions.")),(0,n.kt)("h2",{id:"recyclers--refurbishers"},"Recyclers & Refurbishers"),(0,n.kt)("p",null,"Recyclers & refurbishers play a critical role in the transition to a ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Circular_economy"},"circular economy"),". Recyclers process used products into raw materials for re-use in new production processes. Refurbishers take old products and restore them for re-use. The goal of both processes is to improve sustainability outcomes by re-using natural resources rather than producing new raw materials. As regulators start to impose minimum recycled content requirements and other circularity regulations, the current linear economic model (produce, use, dispose) will require significant change to provide sufficient recycled materials to meet regulatory goals and consumer expectations. The UNTP is designed to support circular economies by including verifiable information on recycled content of products. UNTP also incentivises manufacturers to design new products to optimise recyclability and provides access to product data to better inform recycling processes."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When manufacturers optimise their product design for recyclability and provide access to that information via ",(0,n.kt)("strong",{parentName:"li"},"issued")," UNTP passports then they are uplifting the end-of-life value of their products. Recyclers can leverage this data (especially for high value products like EV batteries) to optimise the efficiency of their recycling processes."),(0,n.kt)("li",{parentName:"ul"},"When recyclers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP passports with their recycled material shipments, they are empowering their customers (manufacturers) to make verifiable claims about the percentage of recycled content in their products. This reduces the due diligence burden and non-compliance risk for manufacturers that face mandated minimum recycled content thresholds."),(0,n.kt)("li",{parentName:"ul"},"When consumers see recycled content claims on products then they can ",(0,n.kt)("strong",{parentName:"li"},"verify")," them with confidence. ")),(0,n.kt)("h2",{id:"environmental--human-welfare-organisations"},"Environmental & Human Welfare Organisations"),(0,n.kt)("p",null,"There are a large number of national and global not-for-profit organisations who's purpose is to promote environmental or human welfare causes. Some \"trust marks\", such as the WWF panda, have very high global brand recognition. Although these organisations don't have the enforcement teeth of regulators, they can strongly influence product market success when their trust mark is added (or revoked). "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When influential ESG trust marks establish well-goverened accreditation frameworks and ",(0,n.kt)("strong",{parentName:"li"},"issue")," (or revoke) UNTP accreditation credentials then they are able to participate in the digital trust ecosystem as ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustAnchors"},"trust anchors"),", thereby multiplying the power of their brand to drive sustainable production practices. ")),(0,n.kt)("h2",{id:"consumers"},"Consumers"),(0,n.kt)("p",null,"Consumer sentiment around sustainable production is strong and growing with over 70% of consumers in some economies actively choosing sustainable goods where possible. At the same time cynicism around greenwashing is increasing which acts to devalue sustainability claims. As greenwashing countermeasures such as UNTP and national regulations become widely adopted, it is reasonable to expect that consumers will become familiar with product passports and ESG verification techniques. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When consumers can confidently ",(0,n.kt)("strong",{parentName:"li"},"verify")," the sustainability performance of products simply by scanning barcodes, QR codes or RFID tags then they will be more likely to choose products with verifiable and trustworthy ESG qualities over that that simply make unverifiable claims. When this behaviour is ubiquitous then consumers will have played a pivotal role in combatting greenwashing and winning the ",(0,n.kt)("a",{parentName:"li",href:"https://uncefact.github.io/spec-untp/docs/about/#but-endemic-greenwashing-risks-devaluing-the-incentives"},"race to the top"),"."),(0,n.kt)("li",{parentName:"ul"},"When products are also equipped with the UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Counterfeiting"},"anti-counterfeiting")," measures then consumers can not only ",(0,n.kt)("strong",{parentName:"li"},"verify")," ESG performance but also confirm that the performance is associated with an authentic product and not a fake. Producers, manufacturers, brands, and retailers can be confident that their sustainability investments are not devalued by counterfeit products.")),(0,n.kt)("h2",{id:"transport--logistics-providers"},"Transport & Logistics Providers"),(0,n.kt)("p",null,"The movement of cargo by sea, air, and land accounts for around ",(0,n.kt)("a",{parentName:"p",href:"https://climate.mit.edu/explainers/freight-transportation"},"10% of global emissions")," and, unless transport itself becomes more sustainable, will account for the largest fraction of global emissions by 2050. Transport (especially by road) is therefore a key part of the emissions intensity of a product on the market. In the same way that UNTP makes ESG credentials discoverable from product batch identifiers, so UNTP allows ESG credentials for transport services to be discoverable from consignment identifiers such as waybill numbers. But is it the buyer of goods or the seller fo goods that is responsible to include transportation in the ESG footprint? The UNTP answer is that it follows the ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Incoterms"},"INCOTERMS")," - essentially whoever pays for the transport has the responsibility to include the transport in their product footprint. This ensures there are no gaps or double counting and that incentives are appropriately aligned."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When transport & logistics providers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP transport credentials and link them to consignment identifiers then they are providing their customers with quantifiable and verifiable transport related ESG metrics to include in their product footprint. As producers, manufacturers, brands, and retailers seek to drive improvements in sustainability performance they will be incentivised to choose low emissions transportation services. This will uplift the value of sustainable transport services per tonne-kilometre.")),(0,n.kt)("h2",{id:"financial-institutions"},"Financial Institutions"),(0,n.kt)("p",null,"Financial institutions are under increasing pressure from both regulators and the investment community to grant preferential terms for investment capital to sustainable businesses. The finance industry will increasingly verify sustainable performance via their customer annual reporting according to ",(0,n.kt)("a",{parentName:"p",href:"https://www.ifrs.org/issued-standards/ifrs-sustainability-standards-navigator/"},"IFRS sustainability standards"),". Just as financial transactions such as bills, invoices and payments aggregate up to corporate financial statements such as profit & loss and balance sheets, so corporate level annual sustainability metrics are constructed from operational data such as UNTP digital product passports. Furthermore, at consignment level, trade finance instruments such as documentary letters of credit normally require sufficient documentation for goods clearnance to be presented prior to payment release. For cases where goods may be blocked at the border due to non-compliance with ESG regulations, then financial institutions will require ESG compliance evidence prior to releasing funds. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When banks can use UNTP product passports and conformity credentials to digitally ",(0,n.kt)("strong",{parentName:"li"},"verify")," ESG compliance for shipments covered by letters of credit then they can more confidently release payment."),(0,n.kt)("li",{parentName:"ul"},"When banks that are providing investment capital on sustainability grounds to businesses that have implemented UNTP then there is a clear line of sight from UNTP-based operational processes to IFRS-based corporate ESG performance, thereby reducing the financial risk associated with the investment.")),(0,n.kt)("h2",{id:"industry-member-associations"},"Industry Member Associations"),(0,n.kt)("p",null,"There are over 100,000 industry associations world-wide. Most represent a specific industry sector within a specific jurisdiction. These member associations typically provide advocacy on behalf of the community and offer best practice advice. In many cases the associations define quality standards and branding that distinguish their member's products in the marketplace (eg genuine ",(0,n.kt)("a",{parentName:"p",href:"https://manukaaustralia.org.au/"},"manuka honey"),"). These member associations are well positioned to assist their members in navigating the complexity of domestic and international ESG standards and in assisting them to implement the UNTP. When a particular association member engages in fraudulent practices then it can quickly damage the reputation of the entire industry. Therefore, member associations are strongly incentivised to ensure that their membership adheres to quality standards and to eject non-compliant members. This includes supporting the adoption of industry-wide sustainable practices and UNTP as the digital evidence of those practices. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Industry member associations may add value to their membership by developing develop UNTP industry profiles that provide their members with targeted implementation guidance that meets the needs of their industry and jurisdiction. "),(0,n.kt)("li",{parentName:"ul"},"Industry member associations may develop training and implementation services, possibly in partnership with local service providers, thereby adding both a valuable service and also a revenue stream for the member association."),(0,n.kt)("li",{parentName:"ul"},"Industry member associations may act as a trusted independent quota managers to counter ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/MassBalance"},"mass balance fraud")," amongst their membership. The value of this service would be increased if the industry association is accredited by either a national accreditation authority or a global environmental or human welfare organisation.")),(0,n.kt)("h2",{id:"software-developers"},"Software Developers"),(0,n.kt)("p",null,"Software developers provide the tooling that is needed to implement UNTP because they hold the data that is needed to ",(0,n.kt)("strong",{parentName:"p"},"issue")," UNTP credentials and they will also consume the data from UNTP credentials that are discovered and ",(0,n.kt)("strong",{parentName:"p"},"verified"),". This category includes enterprise resource planning (ERP) systems, ESG management systems, and traceability platforms. By implementing UNTP, software developers are empowering their customers to participate in global transparent supply chains. For large organisations with heavily customised systems, UNTP implementation may be a customer specific project. For smaller organisations that subscribe to off-the-shelf packages, UNTP conformity is more likely to be simply a new feature in a release roadmap. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"ERP systems are the natural issuers of UNTP product passports and traceability events because they manage the finance and logistics operations around the manufacturing, sales, and shipment of products. "),(0,n.kt)("li",{parentName:"ul"},"ESG management systems are the source of the ESG data such as carbon intensity that will populate UNTP product passports as well as the conformity credentials referenced by the product passport."),(0,n.kt)("li",{parentName:"ul"},"Traceability platforms are used to provide traceability maps of the upstream supply chain. Rather than gathering this data by direct enrolment of upstream actors, UNTP provides a means to gather the same data by following verifiable linked data trails.")),(0,n.kt)("p",null,"The three system types described here may exist in separate software products or may be parts of a more integrated system. Some ERP systems also manage ESG data. Some ESG platforms include traceability functions. It is not unlikely that ERP systems, whether through native product features or acquisition or partnerships, will evolve to offer this integrated set of capabilities to their customers. UNTP defines a simple and implementable standard for software developers to empower their customers to connect into global transparent and sustainable supply chains. "),(0,n.kt)("h2",{id:"service-providers"},"Service Providers"),(0,n.kt)("p",null,"The adoption of UNTP by hundreds of millions of micro (under 5 employees) and small (under 50 employees) business will most likely be driven by implementation of UNTP as out-of-the-box capability by their chosen business software systems. However, the adoption of UNTP by tens of millions of medium (under 500 employees) and large (over 500 employees) business will most likely require some business analysis and systems integration investment. To minimise cost and risk, such businesses are likely to seek UNTP implementation support from a marketplace of experienced service providers."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When service providers such as system integrators develop skills in UNTP implementation then they will be able to offer attractive service packages to their existing customers. They may also be able to leverage UNTP implementations skills to access new customers and markets.")),(0,n.kt)("h1",{id:"success-measures"},"Success Measures"),(0,n.kt)("p",null,"Although reduced greenwashing and improved sustainability are the ultimate goals of UNTP, the most direct measure of success is uptake. Therefore, UNTP will measure uptake by counting the number of pledges (i.e. promises to implement) and the number of successfully completed conformity tests (i.e. actual implementations). For UNTP to achieve it's goals, uptake will need to exceed the minimum thresholds shown in the uptake trajectory below."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Stakeholder type"),(0,n.kt)("th",{parentName:"tr",align:null},"2024 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2024 implement"),(0,n.kt)("th",{parentName:"tr",align:null},"2026 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2026 implement"),(0,n.kt)("th",{parentName:"tr",align:null},"2028 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2028 implement"),(0,n.kt)("th",{parentName:"tr",align:null},"2030 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2030 implement"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Regulators"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"1"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"ESG Standards"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"0"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Accreditation & certification"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Producers & manufacturers"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"500"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"2,000"),(0,n.kt)("td",{parentName:"tr",align:null},"1,000"),(0,n.kt)("td",{parentName:"tr",align:null},"10,000"),(0,n.kt)("td",{parentName:"tr",align:null},"5,000")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Brands & retailers"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"500"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"2,000"),(0,n.kt)("td",{parentName:"tr",align:null},"1,000"),(0,n.kt)("td",{parentName:"tr",align:null},"10,000"),(0,n.kt)("td",{parentName:"tr",align:null},"5,000")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Recyclers & refurbishers"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"0"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Transport & logistics"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Financial institutions"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"0"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Member associations"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"1,000"),(0,n.kt)("td",{parentName:"tr",align:null},"500"),(0,n.kt)("td",{parentName:"tr",align:null},"3,000"),(0,n.kt)("td",{parentName:"tr",align:null},"1,500")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Software developers"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Service providers"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")))),(0,n.kt)("p",null,"Actual progress towards these targets will be tracked via the ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/implementations/"},"Implementations")," pages."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3551f6a5.b0466f1e.js b/assets/js/3551f6a5.b0466f1e.js new file mode 100644 index 00000000..318b2f95 --- /dev/null +++ b/assets/js/3551f6a5.b0466f1e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[2682],{5318:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(7378);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=c(a),m=n,h=p["".concat(l,".").concat(m)]||p[m]||u[m]||i;return a?r.createElement(h,s(s({ref:t},d),{},{components:a})):r.createElement(h,s({ref:t},d))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var c=2;c{a.d(t,{ZP:()=>s});var r=a(5773),n=(a(7378),a(5318));const i={toc:[]};function s(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,r.Z)({},i,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}s.isMDXComponent=!0},965:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var r=a(5773),n=(a(7378),a(5318)),i=a(5611);const s={sidebar_position:2,title:"Audience, Benefits & Goals"},o=void 0,l={unversionedId:"about/Goals",id:"about/Goals",title:"Audience, Benefits & Goals",description:"The primary goal of UNTP is to make significant reductions in the incidence of greenwashing by giving unsustainable behaviour nowhere to hide. This will also uplift the value of legitimate ESG credentials from supply chain actors that have implemented sustainable practices. UNTP will have achieved it's purpose when",source:"@site/docs/about/Goals.md",sourceDirName:"about",slug:"/about/Goals",permalink:"/spec-untp/docs/about/Goals",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/about/Goals.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,title:"Audience, Benefits & Goals"},sidebar:"tutorialSidebar",previous:{title:"About the UNTP",permalink:"/spec-untp/docs/about/"},next:{title:"Requirements",permalink:"/spec-untp/docs/about/Requirements"}},c={},d=[{value:"Regulators",id:"regulators",level:2},{value:"ESG Standards Organisations",id:"esg-standards-organisations",level:2},{value:"Accreditation & Certification Organisations",id:"accreditation--certification-organisations",level:2},{value:"Primary Producers & Manufacturers",id:"primary-producers--manufacturers",level:2},{value:"Brands & Retailers",id:"brands--retailers",level:2},{value:"Recyclers & Refurbishers",id:"recyclers--refurbishers",level:2},{value:"Environmental & Human Welfare Organisations",id:"environmental--human-welfare-organisations",level:2},{value:"Consumers",id:"consumers",level:2},{value:"Transport & Logistics Providers",id:"transport--logistics-providers",level:2},{value:"Financial Institutions",id:"financial-institutions",level:2},{value:"Industry Member Associations",id:"industry-member-associations",level:2},{value:"Software Developers",id:"software-developers",level:2},{value:"Service Providers",id:"service-providers",level:2}],u={toc:d};function p(e){let{components:t,...a}=e;return(0,n.kt)("wrapper",(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)(i.ZP,{mdxType:"Disclaimer"}),(0,n.kt)("h1",{id:"goals"},"Goals"),(0,n.kt)("p",null,"The primary goal of UNTP is to make significant reductions in the incidence of greenwashing by giving unsustainable behaviour nowhere to hide. This will also uplift the value of legitimate ESG credentials from supply chain actors that have implemented sustainable practices. UNTP will have achieved it's purpose when"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Most supply chain shipments are accompanied by verifiable ESG performance data."),(0,n.kt)("li",{parentName:"ul"},"Greenwashing is a niche activity that is easily detected and quickly penalised by markets and regulators."),(0,n.kt)("li",{parentName:"ul"},"Products with the best sustainability characteristics enjoy the greatest market access and price uplift.")),(0,n.kt)("h1",{id:"target-audience--benefits"},"Target Audience & Benefits"),(0,n.kt)("p",null,"All stakeholders in the global supply chain have a role to play and benefits to realise through implementation of the UNTP. As explained in the ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/specification/Architecture"},"Architecture Overview"),", the UNTP is a decentralised architecture where actors can be issuers, or subjects, or verifiers of digital credentials. In many cases, actors will be issuers of some credentials, subjects of others, and verifiers of others. Therefore, the stakeholder roles and benefits described here are separated into the issuer, subject, and verifier roles as appropriate."),(0,n.kt)("h2",{id:"regulators"},"Regulators"),(0,n.kt)("p",null,"Regulators define rules, issue permissions, and manage compliance. By implementing UNTP, regulators will uplift the value of the permissions they issue and improve the efficiency and integrity of compliance operations."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The primary role of regulators as ",(0,n.kt)("strong",{parentName:"li"},"issuers")," is as a ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustAnchors"},"trust anchor"),". When identity credentials such as business registration certificates are issued as digital verifiable credentials according to UNTP then the subjects of those credentials (trading businesses) can add strong verifiable identity to their supply chain transactions. Verifiable identity can facilitate green-lane pre-clearance at import border and higher confidence lending from financial institutions. Similarly, when ESG permits and certificates that demonstrate compliance with domestic regulations are issued digitally, then traders can also attach that evidence to their transactions. In short, when regulators act as digital trust anchors, they will be uplifting their balance of trade by improving access to export markets and trade finance for their traders."),(0,n.kt)("li",{parentName:"ul"},"As ",(0,n.kt)("strong",{parentName:"li"},"verifiers")," of increasingly transparent supply chain data, regulators can significantly uplift compliance activities. Rather than depend on unverifiable claims in regulatory reports that are occasionally audited at high cost, regulators can confidently automate compliance assessment on most trade transactions, leaving a much smaller volume of trade for manual compliance and enforcement activities.")),(0,n.kt)("p",null,"Finally, as national authorities increasingly seek to uplift environmental performance through regulatory initiatives such as consumer centric product passports, we recommend that national regulators consider the UNTP as the basis for their national initiatives. By designing national initiatives as ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/extensions/"},"UNTP extensions"),", regulators will not only be able to re-use a rich and tested body of work, but will also reduce compliance costs for their domestic industry because they will be better aligned with international supply chains."),(0,n.kt)("h2",{id:"esg-standards-organisations"},"ESG Standards Organisations"),(0,n.kt)("p",null,"Standards organisations include the national and international standards authorities as well as industry led organisations. There are a wide variety of governance arrangements in place that impact the legitimacy and value of the published standards. Unlike regulators, standards bodies do not manage compliance which can be self-assessed, or third party audited by test & certification bodies. There are hundreds of standards organisations which collectively issue thousands of ESG standards, each with dozens of specific conformity criteria (i.e. the rules). Most of these are published as PDF documents. The key role for standards authorities under UNTP is to make their ESG rules machine readable so that they can be accurately referenced in conformity credentials."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When ESG standards organisations publish their ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Rules"},"ESG criteria as a machine readable vocabulary")," then they are empowering their community of certifiers to issue digital conformity credentials that unambiguously reference the scope of the conformity claims so that the credentials can be digitally verified."),(0,n.kt)("li",{parentName:"ul"},"Standards authorities will generally not be issuers, subjects, or verifiers of digital credentials unless they also act as accreditation authorities for third party certifiers that will make conformity assessments - in which case they will be issuers of accreditation credentials as described in the next paragraph.")),(0,n.kt)("h2",{id:"accreditation--certification-organisations"},"Accreditation & Certification Organisations"),(0,n.kt)("p",null,"There is a very well established ",(0,n.kt)("a",{parentName:"p",href:"https://casco.iso.org"},"global framework for conformity assessment"),' of entities, processes, and products that has been in place for over 50 years. It provides assurance that products sold on the marketplace meet applicable quality, safety or ESG standards. Under the framework, independent third parties (certifiers) assess products against recognised standards and issue conformity certificates. Furthermore, a global network of mutually recognised national accreditation authorities assess the certifiers to ensure that the conformity certificates are issued by suitably qualified organisations. For example, a manufacturer may claim that their product meets a particular environmental standard. You might ask "how do I know that claim is true?" and the answer would be "because a third party tested the product and issued a certificate". You might then ask "yes, but how do I know that the third party can be trusted?" and the answer would be "because they have been accredited by the national accreditation authority". Despite all this, it\'s still a relatively simple process to create realistic looking but fake paper certificates. UNTP provides a standard way to digitally verify this chain of trust that is much harder to fake. UNTP does not demand that every product claim is third-party assessed, nor that every third party certifier is formally accredited, but does make that chain of trust visible where it exists. UNTP also recognises that less formal but still valuable chains of trust can exist - for example a farmer\'s environmental land management claims might be verified by a community organisation that is endorsed by a well-known global environmental organisation.'),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When national accreditation authorities or other well-known and trusted organisations ",(0,n.kt)("strong",{parentName:"li"},"issue")," their accreditations as UNTP standard digital credentials then they are creating a digital ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustAnchors"},"trust anchor")," that empowers verifiers of ESG conformity certificates to decide whether they can be trusted. The ",(0,n.kt)("strong",{parentName:"li"},"subject")," of the accreditation is the third party conformity assessment body. Implementation of UNTP will amplify the value of the accreditation and the brand or 'trust mark' of the accreditation authority."),(0,n.kt)("li",{parentName:"ul"},"When third party conformity assessment bodies (certifiers) ",(0,n.kt)("strong",{parentName:"li"},"issue")," their product ESG certificates as UNTP standard digital credentials then they are empowering verifiers of the ESG certificates to digitally confirm that the certificates are genuine, have not been tampered, and have not been revoked. Furthermore if the digital conformity certificate contains a link to the accreditation credential then the full ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustGraphs"},"digital chain of trust")," is established. Producers, manufacturers, brands & retailers that implement UNTP will also demand digital versions of the conformity credentials that they can attach to their products. Therefore, conformity assessment bodies that can provide UNTP standard digital credentials will be preferred over those that cannot.")),(0,n.kt)("h2",{id:"primary-producers--manufacturers"},"Primary Producers & Manufacturers"),(0,n.kt)("p",null,"Most physical products are made of materials that either grow above the ground or are dug out from below the ground. Primary producers such as farmers and miners represent the starting point for most supply chains. Recyclers are a special case and are treated separately by UNTP because they are both the end and the (re)start of circular supply chains. Manufacturers take raw or recycled materials and produce intermediate components or final products. Primary producers and manufacturers collectively represent the upstream feedstock supply chain for the branded products sold to consumers."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers implement UNTP by ",(0,n.kt)("strong",{parentName:"li"},"issuing")," ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/DigitalProductPassport"},"B2B digital product passports")," (DPP) and ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/DataCarriers"},"linking them")," to every shipment of goods to their customers, then they are simplifying life for their customers by providing data at the right granularity for them to incorporate their inputs such as scope 3 CO2 emissions into their own product environmental footprint."),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TraceabilityEvents"},"traceability events")," linked to product passports then they are providing provenance evidence that can inform supply chain resilience and preferential treatment decisions by their customers and export market regulators."),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers link third party issued UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/ConformityCredential"},"conformity credentials")," then they are adding trust to the ESG claims in their DPPs that will uplift the value or market access for their products."),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers ",(0,n.kt)("strong",{parentName:"li"},"issue")," the complete collection of passports, traceability events, and conformity credentials and link them to product shipments then they will significantly uplift value to their downstream customers by empowering them to easily and verifiably meet their own ESG due-diligence obligations."),(0,n.kt)("li",{parentName:"ul"},"When producers and manufacturers link their issuer identity to a strong identity credential (such as a government business registration or trademark ownership credential) and implement the UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Counterfeiting"},"anti counterfeiting")," mechanism then they will add strong anti-fraud measures to their products and preserve the value of their sustainability actions.")),(0,n.kt)("p",null,"Producers and manufacturers are themselves ",(0,n.kt)("strong",{parentName:"p"},"verifiers")," of any UNTP credentials linked to their upstream supply chain. The ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/specification/Confidentiality"},"confidentiality measures")," defined by UNTP allow supply chain actors to selectively redact upstream credentials before passing them on to their downstream customers so that ESG evidence can be passed on without revealing commercially sensitive information."),(0,n.kt)("h2",{id:"brands--retailers"},"Brands & Retailers"),(0,n.kt)("p",null,"Brands and retailers consume products from their upstream producers and manufacturers and sell to the consumer. Whilst it is of course true that some brands are also manufacturers and that some retail is to business rather than consumers, the key distinction that UNTP makes is between B2B activities vs B2C activities. Sales to the consumer market is highly regulated in most economies and some are starting to develop regulations that also require product passports to support informed consumer choice and/or improved recycling processes. Brands and retailers must meet domestic regulations and face scrutiny from an increasingly greenwashing-aware consumer as well as from environmental activist organisations. The potential for reputational damage and high fines for non-compliance present brands and retailers with a strong motivation to ensure that sustainable practices are in place both for themselves and their entire supply chain."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When brands and retailers can ",(0,n.kt)("strong",{parentName:"li"},"verify")," UNTP credentials linked to shipments from their upstream suppliers then they can confidently meet their due-diligence obligations and have the rich and verifiable information necessary to issue any consumer-centric product passports required under domestic regulations."),(0,n.kt)("li",{parentName:"ul"},"UNTP should not conflict with local regulations. When international brands and retailers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/DigitalProductPassport"},"product passports"),", ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/ConformityCredential"},"conformity credentials")," and ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TraceabilityEvents"},"traceability events")," across all markets then they are providing a consistent way for consumers to discover and verify ESG performance and are establishing a strong framework for compliance with any current or emerging domestic regulations."),(0,n.kt)("li",{parentName:"ul"},"When brands and retailers request UNTP credentials from their upstream suppliers then they avoiding the challenges associated with imposing specific traceability software solutions on their supply chain. Instead, they are simply requesting conformance with a common standard, irrespective of software platform."),(0,n.kt)("li",{parentName:"ul"},"When brands and retailers that have already made significant investments in GS1 identifiers and standards implement the UNTP, they can follow the GS1 binding to build upon and re-use their existing investments. It should also be noted that UNTP does not impose GS1 solutions on organisations that have not already invested in GS1 standards."),(0,n.kt)("li",{parentName:"ul"},"When brands and retailers link their issuer identity to a strong identity credential (such as a government business registration or trademark ownership credential) and implement the UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Counterfeiting"},"anti counterfeiting")," mechanism then they will add strong anti-fraud measures to their products and preserve the value of their sustainability actions.")),(0,n.kt)("h2",{id:"recyclers--refurbishers"},"Recyclers & Refurbishers"),(0,n.kt)("p",null,"Recyclers & refurbishers play a critical role in the transition to a ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Circular_economy"},"circular economy"),". Recyclers process used products into raw materials for re-use in new production processes. Refurbishers take old products and restore them for re-use. The goal of both processes is to improve sustainability outcomes by re-using natural resources rather than producing new raw materials. As regulators start to impose minimum recycled content requirements and other circularity regulations, the current linear economic model (produce, use, dispose) will require significant change to provide sufficient recycled materials to meet regulatory goals and consumer expectations. The UNTP is designed to support circular economies by including verifiable information on recycled content of products. UNTP also incentivises manufacturers to design new products to optimise recyclability and provides access to product data to better inform recycling processes."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When manufacturers optimise their product design for recyclability and provide access to that information via ",(0,n.kt)("strong",{parentName:"li"},"issued")," UNTP passports then they are uplifting the end-of-life value of their products. Recyclers can leverage this data (especially for high value products like EV batteries) to optimise the efficiency of their recycling processes."),(0,n.kt)("li",{parentName:"ul"},"When recyclers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP passports with their recycled material shipments, they are empowering their customers (manufacturers) to make verifiable claims about the percentage of recycled content in their products. This reduces the due diligence burden and non-compliance risk for manufacturers that face mandated minimum recycled content thresholds."),(0,n.kt)("li",{parentName:"ul"},"When consumers see recycled content claims on products then they can ",(0,n.kt)("strong",{parentName:"li"},"verify")," them with confidence.")),(0,n.kt)("h2",{id:"environmental--human-welfare-organisations"},"Environmental & Human Welfare Organisations"),(0,n.kt)("p",null,"There are a large number of national and global not-for-profit organisations who's purpose is to promote environmental or human welfare causes. Some \"trust marks\", such as the WWF panda, have very high global brand recognition. Although these organisations don't have the enforcement teeth of regulators, they can strongly influence product market success when their trust mark is added (or revoked)."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When influential ESG trust marks establish well-goverened accreditation frameworks and ",(0,n.kt)("strong",{parentName:"li"},"issue")," (or revoke) UNTP accreditation credentials then they are able to participate in the digital trust ecosystem as ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/TrustAnchors"},"trust anchors"),", thereby multiplying the power of their brand to drive sustainable production practices.")),(0,n.kt)("h2",{id:"consumers"},"Consumers"),(0,n.kt)("p",null,"Consumer sentiment around sustainable production is strong and growing with over 70% of consumers in some economies actively choosing sustainable goods where possible. At the same time cynicism around greenwashing is increasing which acts to devalue sustainability claims. As greenwashing countermeasures such as UNTP and national regulations become widely adopted, it is reasonable to expect that consumers will become familiar with product passports and ESG verification techniques."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When consumers can confidently ",(0,n.kt)("strong",{parentName:"li"},"verify")," the sustainability performance of products simply by scanning barcodes, QR codes or RFID tags then they will be more likely to choose products with verifiable and trustworthy ESG qualities over that that simply make unverifiable claims. When this behaviour is ubiquitous then consumers will have played a pivotal role in combatting greenwashing and winning the ",(0,n.kt)("a",{parentName:"li",href:"https://uncefact.github.io/spec-untp/docs/about/#but-endemic-greenwashing-risks-devaluing-the-incentives"},"race to the top"),"."),(0,n.kt)("li",{parentName:"ul"},"When products are also equipped with the UNTP ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/Counterfeiting"},"anti-counterfeiting")," measures then consumers can not only ",(0,n.kt)("strong",{parentName:"li"},"verify")," ESG performance but also confirm that the performance is associated with an authentic product and not a fake. Producers, manufacturers, brands, and retailers can be confident that their sustainability investments are not devalued by counterfeit products.")),(0,n.kt)("h2",{id:"transport--logistics-providers"},"Transport & Logistics Providers"),(0,n.kt)("p",null,"The movement of cargo by sea, air, and land accounts for around ",(0,n.kt)("a",{parentName:"p",href:"https://climate.mit.edu/explainers/freight-transportation"},"10% of global emissions")," and, unless transport itself becomes more sustainable, will account for the largest fraction of global emissions by 2050. Transport (especially by road) is therefore a key part of the emissions intensity of a product on the market. In the same way that UNTP makes ESG credentials discoverable from product batch identifiers, so UNTP allows ESG credentials for transport services to be discoverable from consignment identifiers such as waybill numbers. But is it the buyer of goods or the seller fo goods that is responsible to include transportation in the ESG footprint? The UNTP answer is that it follows the ",(0,n.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Incoterms"},"INCOTERMS")," - essentially whoever pays for the transport has the responsibility to include the transport in their product footprint. This ensures there are no gaps or double counting and that incentives are appropriately aligned."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When transport & logistics providers ",(0,n.kt)("strong",{parentName:"li"},"issue")," UNTP transport credentials and link them to consignment identifiers then they are providing their customers with quantifiable and verifiable transport related ESG metrics to include in their product footprint. As producers, manufacturers, brands, and retailers seek to drive improvements in sustainability performance they will be incentivised to choose low emissions transportation services. This will uplift the value of sustainable transport services per tonne-kilometre.")),(0,n.kt)("h2",{id:"financial-institutions"},"Financial Institutions"),(0,n.kt)("p",null,"Financial institutions are under increasing pressure from both regulators and the investment community to grant preferential terms for investment capital to sustainable businesses. The finance industry will increasingly verify sustainable performance via their customer annual reporting according to ",(0,n.kt)("a",{parentName:"p",href:"https://www.ifrs.org/issued-standards/ifrs-sustainability-standards-navigator/"},"IFRS sustainability standards"),". Just as financial transactions such as bills, invoices and payments aggregate up to corporate financial statements such as profit & loss and balance sheets, so corporate level annual sustainability metrics are constructed from operational data such as UNTP digital product passports. Furthermore, at consignment level, trade finance instruments such as documentary letters of credit normally require sufficient documentation for goods clearnance to be presented prior to payment release. For cases where goods may be blocked at the border due to non-compliance with ESG regulations, then financial institutions will require ESG compliance evidence prior to releasing funds."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When banks can use UNTP product passports and conformity credentials to digitally ",(0,n.kt)("strong",{parentName:"li"},"verify")," ESG compliance for shipments covered by letters of credit then they can more confidently release payment."),(0,n.kt)("li",{parentName:"ul"},"When banks that are providing investment capital on sustainability grounds to businesses that have implemented UNTP then there is a clear line of sight from UNTP-based operational processes to IFRS-based corporate ESG performance, thereby reducing the financial risk associated with the investment.")),(0,n.kt)("h2",{id:"industry-member-associations"},"Industry Member Associations"),(0,n.kt)("p",null,"There are over 100,000 industry associations world-wide. Most represent a specific industry sector within a specific jurisdiction. These member associations typically provide advocacy on behalf of the community and offer best practice advice. In many cases the associations define quality standards and branding that distinguish their member's products in the marketplace (eg genuine ",(0,n.kt)("a",{parentName:"p",href:"https://manukaaustralia.org.au/"},"manuka honey"),"). These member associations are well positioned to assist their members in navigating the complexity of domestic and international ESG standards and in assisting them to implement the UNTP. When a particular association member engages in fraudulent practices then it can quickly damage the reputation of the entire industry. Therefore, member associations are strongly incentivised to ensure that their membership adheres to quality standards and to eject non-compliant members. This includes supporting the adoption of industry-wide sustainable practices and UNTP as the digital evidence of those practices."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Industry member associations may add value to their membership by developing develop UNTP industry profiles that provide their members with targeted implementation guidance that meets the needs of their industry and jurisdiction."),(0,n.kt)("li",{parentName:"ul"},"Industry member associations may develop training and implementation services, possibly in partnership with local service providers, thereby adding both a valuable service and also a revenue stream for the member association."),(0,n.kt)("li",{parentName:"ul"},"Industry member associations may act as a trusted independent quota managers to counter ",(0,n.kt)("a",{parentName:"li",href:"/spec-untp/docs/specification/MassBalance"},"mass balance fraud")," amongst their membership. The value of this service would be increased if the industry association is accredited by either a national accreditation authority or a global environmental or human welfare organisation.")),(0,n.kt)("h2",{id:"software-developers"},"Software Developers"),(0,n.kt)("p",null,"Software developers provide the tooling that is needed to implement UNTP because they hold the data that is needed to ",(0,n.kt)("strong",{parentName:"p"},"issue")," UNTP credentials and they will also consume the data from UNTP credentials that are discovered and ",(0,n.kt)("strong",{parentName:"p"},"verified"),". This category includes enterprise resource planning (ERP) systems, ESG management systems, and traceability platforms. By implementing UNTP, software developers are empowering their customers to participate in global transparent supply chains. For large organisations with heavily customised systems, UNTP implementation may be a customer specific project. For smaller organisations that subscribe to off-the-shelf packages, UNTP conformity is more likely to be simply a new feature in a release roadmap."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"ERP systems are the natural issuers of UNTP product passports and traceability events because they manage the finance and logistics operations around the manufacturing, sales, and shipment of products."),(0,n.kt)("li",{parentName:"ul"},"ESG management systems are the source of the ESG data such as carbon intensity that will populate UNTP product passports as well as the conformity credentials referenced by the product passport."),(0,n.kt)("li",{parentName:"ul"},"Traceability platforms are used to provide traceability maps of the upstream supply chain. Rather than gathering this data by direct enrolment of upstream actors, UNTP provides a means to gather the same data by following verifiable linked data trails.")),(0,n.kt)("p",null,"The three system types described here may exist in separate software products or may be parts of a more integrated system. Some ERP systems also manage ESG data. Some ESG platforms include traceability functions. It is not unlikely that ERP systems, whether through native product features or acquisition or partnerships, will evolve to offer this integrated set of capabilities to their customers. UNTP defines a simple and implementable standard for software developers to empower their customers to connect into global transparent and sustainable supply chains."),(0,n.kt)("h2",{id:"service-providers"},"Service Providers"),(0,n.kt)("p",null,"The adoption of UNTP by hundreds of millions of micro (under 5 employees) and small (under 50 employees) business will most likely be driven by implementation of UNTP as out-of-the-box capability by their chosen business software systems. However, the adoption of UNTP by tens of millions of medium (under 500 employees) and large (over 500 employees) business will most likely require some business analysis and systems integration investment. To minimise cost and risk, such businesses are likely to seek UNTP implementation support from a marketplace of experienced service providers."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"When service providers such as system integrators develop skills in UNTP implementation then they will be able to offer attractive service packages to their existing customers. They may also be able to leverage UNTP implementations skills to access new customers and markets.")),(0,n.kt)("h1",{id:"success-measures"},"Success Measures"),(0,n.kt)("p",null,"Although reduced greenwashing and improved sustainability are the ultimate goals of UNTP, the most direct measure of success is uptake. Therefore, UNTP will measure uptake by counting the number of pledges (i.e. promises to implement) and the number of successfully completed conformity tests (i.e. actual implementations). For UNTP to achieve it's goals, uptake will need to exceed the minimum thresholds shown in the uptake trajectory below."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Stakeholder type"),(0,n.kt)("th",{parentName:"tr",align:null},"2024 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2024 implement"),(0,n.kt)("th",{parentName:"tr",align:null},"2026 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2026 implement"),(0,n.kt)("th",{parentName:"tr",align:null},"2028 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2028 implement"),(0,n.kt)("th",{parentName:"tr",align:null},"2030 pledge"),(0,n.kt)("th",{parentName:"tr",align:null},"2030 implement"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Regulators"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"1"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"ESG Standards"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"0"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Accreditation & certification"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Producers & manufacturers"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"500"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"2,000"),(0,n.kt)("td",{parentName:"tr",align:null},"1,000"),(0,n.kt)("td",{parentName:"tr",align:null},"10,000"),(0,n.kt)("td",{parentName:"tr",align:null},"5,000")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Brands & retailers"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"500"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"2,000"),(0,n.kt)("td",{parentName:"tr",align:null},"1,000"),(0,n.kt)("td",{parentName:"tr",align:null},"10,000"),(0,n.kt)("td",{parentName:"tr",align:null},"5,000")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Recyclers & refurbishers"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"0"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Transport & logistics"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Financial institutions"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"0"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Member associations"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"10"),(0,n.kt)("td",{parentName:"tr",align:null},"200"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"1,000"),(0,n.kt)("td",{parentName:"tr",align:null},"500"),(0,n.kt)("td",{parentName:"tr",align:null},"3,000"),(0,n.kt)("td",{parentName:"tr",align:null},"1,500")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Software developers"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Service providers"),(0,n.kt)("td",{parentName:"tr",align:null},"20"),(0,n.kt)("td",{parentName:"tr",align:null},"2"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"25"),(0,n.kt)("td",{parentName:"tr",align:null},"100"),(0,n.kt)("td",{parentName:"tr",align:null},"50"),(0,n.kt)("td",{parentName:"tr",align:null},"300"),(0,n.kt)("td",{parentName:"tr",align:null},"150")))),(0,n.kt)("p",null,"Actual progress towards these targets will be tracked via the ",(0,n.kt)("a",{parentName:"p",href:"/spec-untp/docs/implementations/"},"Implementations")," pages."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/62737bf6.9fdb17ce.js b/assets/js/62737bf6.9fdb17ce.js deleted file mode 100644 index 5bb50766..00000000 --- a/assets/js/62737bf6.9fdb17ce.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[5569],{5318:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>u});var i=r(7378);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=i.createContext({}),d=function(e){var t=i.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},c=function(e){var t=d(e.components);return i.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},f=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),f=d(r),u=a,b=f["".concat(l,".").concat(u)]||f[u]||p[u]||n;return r?i.createElement(b,s(s({ref:t},c),{},{components:r})):i.createElement(b,s({ref:t},c))}));function u(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,s=new Array(n);s[0]=f;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:a,s[1]=o;for(var d=2;d{r.d(t,{ZP:()=>s});var i=r(5773),a=(r(7378),r(5318));const n={toc:[]};function s(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,i.Z)({},n,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}s.isMDXComponent=!0},1710:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>f,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var i=r(5773),a=(r(7378),r(5318)),n=r(5611);const s={sidebar_position:28,title:"Verifiable Credentials"},o=void 0,l={unversionedId:"specification/VerifiableCredentials",id:"specification/VerifiableCredentials",title:"Verifiable Credentials",description:"The World-Wide-Web Consortium (W3C) has defined a standard called Verifiable Credentials (VCs). A VC is a portable digital version of everyday credentials like education certificates, permits, licenses, registrations, and so on. VCs are digitally signed by the issuing party and are tamper proof, privacy preserving, revokable, and digitally verifiable. The UN has previously assessed this standard and has recommended it's use for a variety of cross border trade use cases in a recent white paper. VCs are inherently decentralised and so are an excellent fit for UNTP which recommends that passports, credentials, and traceability events are all issued as W3C VCs. A related W3C standard called Decentralised Identifiers (DIDs) provides a mechanism to manage the cryptographic keys used by verifiable credentials and also to link multiple credentials into verifiable trust graphs. DIDs are not the same as the business / product / location identifiers maintained by authoritative agencies - but can be linked to them.",source:"@site/docs/specification/VerifiableCredentials.md",sourceDirName:"specification",slug:"/specification/VerifiableCredentials",permalink:"/spec-untp/docs/specification/VerifiableCredentials",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/VerifiableCredentials.md",tags:[],version:"current",sidebarPosition:28,frontMatter:{sidebar_position:28,title:"Verifiable Credentials"},sidebar:"tutorialSidebar",previous:{title:"Vocabularies",permalink:"/spec-untp/docs/specification/Vocabularies"},next:{title:"Data Carriers",permalink:"/spec-untp/docs/specification/DataCarriers"}},d={},c=[{value:"W3C VC Interoperability Profile",id:"w3c-vc-interoperability-profile",level:2},{value:"W3C DID Interoperability Profile",id:"w3c-did-interoperability-profile",level:2},{value:"Hyperledger AnonCreds Interoperability Profile",id:"hyperledger-anoncreds-interoperability-profile",level:2}],p={toc:c};function f(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,i.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)(n.ZP,{mdxType:"Disclaimer"}),(0,a.kt)("h1",{id:"overview"},"Overview"),(0,a.kt)("p",null,"The World-Wide-Web Consortium (W3C) has defined a standard called ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-data-model/"},"Verifiable Credentials (VCs)"),". A VC is a portable digital version of everyday credentials like education certificates, permits, licenses, registrations, and so on. VCs are digitally signed by the issuing party and are tamper proof, privacy preserving, revokable, and digitally verifiable. The UN has previously assessed this standard and has recommended it's use for a variety of cross border trade use cases in a recent ",(0,a.kt)("a",{parentName:"p",href:"https://unece.org/trade/documents/2023/10/white-paper-edata-verifiable-credentials-cross-border-trade"},"white paper"),". VCs are inherently decentralised and so are an excellent fit for UNTP which recommends that passports, credentials, and traceability events are all issued as W3C VCs. A related W3C standard called ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/did-core/"},"Decentralised Identifiers (DIDs)")," provides a mechanism to manage the cryptographic keys used by verifiable credentials and also to link multiple credentials into verifiable trust graphs. DIDs are not the same as the business / product / location identifiers maintained by authoritative agencies - but can be linked to them. "),(0,a.kt)("h2",{id:"w3c-vc-interoperability-profile"},"W3C VC Interoperability Profile"),(0,a.kt)("h2",{id:"w3c-did-interoperability-profile"},"W3C DID Interoperability Profile"),(0,a.kt)("h2",{id:"hyperledger-anoncreds-interoperability-profile"},"Hyperledger AnonCreds Interoperability Profile"))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/62737bf6.aac0414b.js b/assets/js/62737bf6.aac0414b.js new file mode 100644 index 00000000..894c59ff --- /dev/null +++ b/assets/js/62737bf6.aac0414b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[5569],{5318:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var i=r(7378);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=i.createContext({}),l=function(e){var t=i.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=l(e.components);return i.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=l(r),f=a,m=u["".concat(c,".").concat(f)]||u[f]||p[f]||n;return r?i.createElement(m,s(s({ref:t},d),{},{components:r})):i.createElement(m,s({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,s=new Array(n);s[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o.mdxType="string"==typeof e?e:a,s[1]=o;for(var l=2;l{r.d(t,{ZP:()=>s});var i=r(5773),a=(r(7378),r(5318));const n={toc:[]};function s(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,i.Z)({},n,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}s.isMDXComponent=!0},1710:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var i=r(5773),a=(r(7378),r(5318)),n=r(5611);const s={sidebar_position:28,title:"Verifiable Credentials"},o=void 0,c={unversionedId:"specification/VerifiableCredentials",id:"specification/VerifiableCredentials",title:"Verifiable Credentials",description:"The World-Wide-Web Consortium (W3C) has defined a standard called Verifiable Credentials (VCs). A VC is a portable digital version of everyday credentials like education certificates, permits, licenses, registrations, and so on. VCs are digitally signed by the issuing party and are tamper proof, privacy preserving, revokable, and digitally verifiable. The UN has previously assessed this standard and has recommended it's use for a variety of cross border trade use cases in a recent white paper. VCs are inherently decentralised and so are an excellent fit for UNTP which recommends that passports, credentials, and traceability events are all issued as W3C VCs. A related W3C standard called Decentralised Identifiers (DIDs) provides a mechanism to manage the cryptographic keys used by verifiable credentials and also to link multiple credentials into verifiable trust graphs. DIDs are not the same as the business / product / location identifiers maintained by authoritative agencies - but can be linked to them.",source:"@site/docs/specification/VerifiableCredentials.md",sourceDirName:"specification",slug:"/specification/VerifiableCredentials",permalink:"/spec-untp/docs/specification/VerifiableCredentials",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/VerifiableCredentials.md",tags:[],version:"current",sidebarPosition:28,frontMatter:{sidebar_position:28,title:"Verifiable Credentials"},sidebar:"tutorialSidebar",previous:{title:"Vocabularies",permalink:"/spec-untp/docs/specification/Vocabularies"},next:{title:"Data Carriers",permalink:"/spec-untp/docs/specification/DataCarriers"}},l={},d=[],p={toc:d};function u(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,i.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)(n.ZP,{mdxType:"Disclaimer"}),(0,a.kt)("h1",{id:"overview"},"Overview"),(0,a.kt)("p",null,"The World-Wide-Web Consortium (W3C) has defined a standard called ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-data-model-2.0/"},"Verifiable Credentials (VCs)"),". A VC is a portable digital version of everyday credentials like education certificates, permits, licenses, registrations, and so on. VCs are digitally signed by the issuing party and are tamper proof, privacy preserving, revokable, and digitally verifiable. The UN has previously assessed this standard and has recommended it's use for a variety of cross border trade use cases in a recent ",(0,a.kt)("a",{parentName:"p",href:"https://unece.org/trade/documents/2023/10/white-paper-edata-verifiable-credentials-cross-border-trade"},"white paper"),". VCs are inherently decentralised and so are an excellent fit for UNTP which recommends that passports, credentials, and traceability events are all issued as W3C VCs. A related W3C standard called ",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/did-core/"},"Decentralised Identifiers (DIDs)")," provides a mechanism to manage the cryptographic keys used by verifiable credentials and also to link multiple credentials into verifiable trust graphs. DIDs are not the same as the business / product / location identifiers maintained by authoritative agencies - but can be linked to them."),(0,a.kt)("h1",{id:"requirements"},"Requirements"),(0,a.kt)("p",null,"MUST implement the ","[W3C-VC-DATA-MODEL]"," using the JSON-LD Compacted Document Form\nMUST implement the enveloping proof mechanism defined in ","[W3C-VC-JOSE-COSE]"," with JOSE (Section 3.1.1)\nMUST implement ","[W3C-BITSTRING-STATUS-LIST]"," for credential status checks including revocation checks\nMUST implement ","[W3C-DID-CORE]","\nMUST implement the did:web method as an Organizational Identifier"),(0,a.kt)("h1",{id:"normative-references"},"Normative References"),(0,a.kt)("p",null,"[W3C-VC-DATA-MODEL]"," W3C Verifiable Credentials Data Model\n",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-data-model-2.0/"},"https://www.w3.org/TR/vc-data-model-2.0/"),"\n","[W3C-VC-JOSE-COSE]"," W3C Securing Verifiable Credentials using JOSE and COSE\n",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-jose-cose/"},"https://www.w3.org/TR/vc-jose-cose/"),"\n","[W3C-BITSTRING-STATUS-LIST]"," W3C Bitstring Status List\n",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/vc-bitstring-status-list/"},"https://www.w3.org/TR/vc-bitstring-status-list/"),"\n","[W3C-DID-CORE]"," W3C Decentralized Identifiers\n",(0,a.kt)("a",{parentName:"p",href:"https://www.w3.org/TR/did-core/"},"https://www.w3.org/TR/did-core/")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.5eca8d59.js b/assets/js/935f2afb.5eca8d59.js deleted file mode 100644 index 4064046e..00000000 --- a/assets/js/935f2afb.5eca8d59.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"About the UNTP","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Audience, Benefits & Goals","href":"/spec-untp/docs/about/Goals","docId":"about/Goals"},{"type":"link","label":"Requirements","href":"/spec-untp/docs/about/Requirements","docId":"about/Requirements"},{"type":"link","label":"Governance","href":"/spec-untp/docs/about/Governance","docId":"about/Governance"},{"type":"link","label":"Pledge","href":"/spec-untp/docs/about/Pledge","docId":"about/Pledge"},{"type":"link","label":"FAQ","href":"/spec-untp/docs/about/FAQ","docId":"about/FAQ"}],"href":"/spec-untp/docs/about/"},{"type":"category","label":"Specification","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Architecture","href":"/spec-untp/docs/specification/Architecture","docId":"specification/Architecture"},{"type":"link","label":"Digitial Product Passport","href":"/spec-untp/docs/specification/DigitalProductPassport","docId":"specification/DigitalProductPassport"},{"type":"link","label":"Conformity Credential","href":"/spec-untp/docs/specification/ConformityCredential","docId":"specification/ConformityCredential"},{"type":"link","label":"Traceability Events","href":"/spec-untp/docs/specification/TraceabilityEvents","docId":"specification/TraceabilityEvents"},{"type":"link","label":"Identifiers","href":"/spec-untp/docs/specification/Identifiers","docId":"specification/Identifiers"},{"type":"link","label":"Vocabularies","href":"/spec-untp/docs/specification/Vocabularies","docId":"specification/Vocabularies"},{"type":"link","label":"Verifiable Credentials","href":"/spec-untp/docs/specification/VerifiableCredentials","docId":"specification/VerifiableCredentials"},{"type":"link","label":"Data Carriers","href":"/spec-untp/docs/specification/DataCarriers","docId":"specification/DataCarriers"},{"type":"link","label":"Trust Anchors","href":"/spec-untp/docs/specification/TrustAnchors","docId":"specification/TrustAnchors"},{"type":"link","label":"Trust Graphs","href":"/spec-untp/docs/specification/TrustGraphs","docId":"specification/TrustGraphs"},{"type":"link","label":"Confidentiality","href":"/spec-untp/docs/specification/Confidentiality","docId":"specification/Confidentiality"},{"type":"link","label":"Anti-Counterfeiting","href":"/spec-untp/docs/specification/Counterfeiting","docId":"specification/Counterfeiting"},{"type":"link","label":"Mass Balance","href":"/spec-untp/docs/specification/MassBalance","docId":"specification/MassBalance"},{"type":"link","label":"ESG Rules","href":"/spec-untp/docs/specification/Rules","docId":"specification/Rules"},{"type":"link","label":"GS1 Binding","href":"/spec-untp/docs/specification/GS1Binding","docId":"specification/GS1Binding"}],"href":"/spec-untp/docs/specification/"},{"type":"category","label":"Business Case","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"For Regulators","href":"/spec-untp/docs/business-case/Regulators","docId":"business-case/Regulators"},{"type":"link","label":"For Industry","href":"/spec-untp/docs/business-case/Industry","docId":"business-case/Industry"},{"type":"link","label":"For Industry Associations","href":"/spec-untp/docs/business-case/Associations","docId":"business-case/Associations"},{"type":"link","label":"For Certifiers","href":"/spec-untp/docs/business-case/Certifiers","docId":"business-case/Certifiers"},{"type":"link","label":"For Software Vendors","href":"/spec-untp/docs/business-case/Software","docId":"business-case/Software"}],"href":"/spec-untp/docs/business-case/"},{"type":"category","label":"Tools and support","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Test Cases","href":"/spec-untp/docs/tools-and-support/TestCases","docId":"tools-and-support/TestCases"},{"type":"link","label":"Test Service","href":"/spec-untp/docs/tools-and-support/TestService","docId":"tools-and-support/TestService"},{"type":"link","label":"Tools","href":"/spec-untp/docs/tools-and-support/Tools","docId":"tools-and-support/Tools"},{"type":"link","label":"Support","href":"/spec-untp/docs/tools-and-support/Support","docId":"tools-and-support/Support"}],"href":"/spec-untp/docs/tools-and-support/"},{"type":"category","label":"Extensions Register","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Extensions Methodology","href":"/spec-untp/docs/extensions/ExtensionsMethodology","docId":"extensions/ExtensionsMethodology"},{"type":"link","label":"Extensions Register","href":"/spec-untp/docs/extensions/ExtensionsRegister","docId":"extensions/ExtensionsRegister"}],"href":"/spec-untp/docs/extensions/"},{"type":"category","label":"Implementations Register","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Conformity","href":"/spec-untp/docs/implementations/Conformity","docId":"implementations/Conformity"},{"type":"link","label":"Register","href":"/spec-untp/docs/implementations/Register","docId":"implementations/Register"}],"href":"/spec-untp/docs/implementations/"}]},"docs":{"about/FAQ":{"id":"about/FAQ","title":"FAQ","description":"","sidebar":"tutorialSidebar"},"about/Goals":{"id":"about/Goals","title":"Audience, Benefits & Goals","description":"The primary goal of UNTP is to make significant reductions in the incidence of greenwashing by giving unsustainable behaviour nowhere to hide. This will also uplift the value of legitimate ESG credentials from supply chain actors that have implemented sustainable practices. UNTP will have achieved it\'s purpose when","sidebar":"tutorialSidebar"},"about/Governance":{"id":"about/Governance","title":"Governance","description":"Management process","sidebar":"tutorialSidebar"},"about/index":{"id":"about/index","title":"About the UNTP","description":"The United Nations Transparency Protocol (UNTP) aims to support governments and industry with practical measures to counter greenwashing by implementing supply chain traceability and transparency at the scale needed to achieve meaningful impacts on global sustainability outcomes.","sidebar":"tutorialSidebar"},"about/Pledge":{"id":"about/Pledge","title":"Pledge","description":"","sidebar":"tutorialSidebar"},"about/Requirements":{"id":"about/Requirements","title":"Requirements","description":"This page provides a summary of the high level business requirements for UNTP, grouped into 7 catgories. Each requirement is linked to the page(s) where the solution to the requirement is defined.","sidebar":"tutorialSidebar"},"business-case/Associations":{"id":"business-case/Associations","title":"For Industry Associations","description":"","sidebar":"tutorialSidebar"},"business-case/Certifiers":{"id":"business-case/Certifiers","title":"For Certifiers","description":"","sidebar":"tutorialSidebar"},"business-case/index":{"id":"business-case/index","title":"Business Case","description":"","sidebar":"tutorialSidebar"},"business-case/Industry":{"id":"business-case/Industry","title":"For Industry","description":"","sidebar":"tutorialSidebar"},"business-case/Regulators":{"id":"business-case/Regulators","title":"For Regulators","description":"","sidebar":"tutorialSidebar"},"business-case/Software":{"id":"business-case/Software","title":"For Software Vendors","description":"","sidebar":"tutorialSidebar"},"extensions/ExtensionsMethodology":{"id":"extensions/ExtensionsMethodology","title":"Extensions Methodology","description":"","sidebar":"tutorialSidebar"},"extensions/ExtensionsRegister":{"id":"extensions/ExtensionsRegister","title":"Extensions Register","description":"","sidebar":"tutorialSidebar"},"extensions/index":{"id":"extensions/index","title":"Extensions Register","description":"","sidebar":"tutorialSidebar"},"implementations/Conformity":{"id":"implementations/Conformity","title":"Conformity","description":"","sidebar":"tutorialSidebar"},"implementations/index":{"id":"implementations/index","title":"Implementations Register","description":"","sidebar":"tutorialSidebar"},"implementations/Register":{"id":"implementations/Register","title":"Register","description":"","sidebar":"tutorialSidebar"},"specification/Architecture":{"id":"specification/Architecture","title":"Architecture","description":"Overview","sidebar":"tutorialSidebar"},"specification/Confidentiality":{"id":"specification/Confidentiality","title":"Confidentiality","description":"There is a balance between the demands of transparency (more supply chain visibility means it\'s harder to hide greenwshing) and confidentiality (share too much data and you risk expososing commercial secrets). A key UNTP principle is that every supply chain actor should be able to choose their own balance between transparency and confidentiality. To achieve this, UNTP defines six data confidentiality patterns with different degrees of data protection so that they can be appropriately combined to meet the confidentiality goals of each party. This includes the ability to selectively redact data from credentials received from upstream suppliers before passing them on to downstream buyers - without affecting the cryptographic integrity of the data.","sidebar":"tutorialSidebar"},"specification/ConformityCredential":{"id":"specification/ConformityCredential","title":"Conformity Credential","description":"Overview","sidebar":"tutorialSidebar"},"specification/Counterfeiting":{"id":"specification/Counterfeiting","title":"Anti-Counterfeiting","description":"Overview","sidebar":"tutorialSidebar"},"specification/DataCarriers":{"id":"specification/DataCarriers","title":"Data Carriers","description":"Overview","sidebar":"tutorialSidebar"},"specification/DigitalProductPassport":{"id":"specification/DigitalProductPassport","title":"Digitial Product Passport","description":"Overview","sidebar":"tutorialSidebar"},"specification/GS1Binding":{"id":"specification/GS1Binding","title":"GS1 Binding","description":"Overview","sidebar":"tutorialSidebar"},"specification/Identifiers":{"id":"specification/Identifiers","title":"Identifiers","description":"Overview","sidebar":"tutorialSidebar"},"specification/index":{"id":"specification/index","title":"Specification","description":"The specification is the heart of UNTP. It defines the detailed specifications for interoperable implementations. This page provides an outline of the purpose and scope of each component of the specification.","sidebar":"tutorialSidebar"},"specification/MassBalance":{"id":"specification/MassBalance","title":"Mass Balance","description":"Overview","sidebar":"tutorialSidebar"},"specification/Rules":{"id":"specification/Rules","title":"ESG Rules","description":"Overview","sidebar":"tutorialSidebar"},"specification/TraceabilityEvents":{"id":"specification/TraceabilityEvents","title":"Traceability Events","description":"Overview","sidebar":"tutorialSidebar"},"specification/TrustAnchors":{"id":"specification/TrustAnchors","title":"Trust Anchors","description":"Overview","sidebar":"tutorialSidebar"},"specification/TrustGraphs":{"id":"specification/TrustGraphs","title":"Trust Graphs","description":"Overview","sidebar":"tutorialSidebar"},"specification/VerifiableCredentials":{"id":"specification/VerifiableCredentials","title":"Verifiable Credentials","description":"The World-Wide-Web Consortium (W3C) has defined a standard called Verifiable Credentials (VCs). A VC is a portable digital version of everyday credentials like education certificates, permits, licenses, registrations, and so on. VCs are digitally signed by the issuing party and are tamper proof, privacy preserving, revokable, and digitally verifiable. The UN has previously assessed this standard and has recommended it\'s use for a variety of cross border trade use cases in a recent white paper. VCs are inherently decentralised and so are an excellent fit for UNTP which recommends that passports, credentials, and traceability events are all issued as W3C VCs. A related W3C standard called Decentralised Identifiers (DIDs) provides a mechanism to manage the cryptographic keys used by verifiable credentials and also to link multiple credentials into verifiable trust graphs. DIDs are not the same as the business / product / location identifiers maintained by authoritative agencies - but can be linked to them.","sidebar":"tutorialSidebar"},"specification/Vocabularies":{"id":"specification/Vocabularies","title":"Vocabularies","description":"Overview","sidebar":"tutorialSidebar"},"tools-and-support/index":{"id":"tools-and-support/index","title":"Tools and support","description":"","sidebar":"tutorialSidebar"},"tools-and-support/Support":{"id":"tools-and-support/Support","title":"Support","description":"","sidebar":"tutorialSidebar"},"tools-and-support/TestCases":{"id":"tools-and-support/TestCases","title":"Test Cases","description":"","sidebar":"tutorialSidebar"},"tools-and-support/TestService":{"id":"tools-and-support/TestService","title":"Test Service","description":"","sidebar":"tutorialSidebar"},"tools-and-support/Tools":{"id":"tools-and-support/Tools","title":"Tools","description":"","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.7de874a9.js b/assets/js/935f2afb.7de874a9.js new file mode 100644 index 00000000..3e01c5b7 --- /dev/null +++ b/assets/js/935f2afb.7de874a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"About the UNTP","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Audience, Benefits & Goals","href":"/spec-untp/docs/about/Goals","docId":"about/Goals"},{"type":"link","label":"Requirements","href":"/spec-untp/docs/about/Requirements","docId":"about/Requirements"},{"type":"link","label":"Governance","href":"/spec-untp/docs/about/Governance","docId":"about/Governance"},{"type":"link","label":"Pledge","href":"/spec-untp/docs/about/Pledge","docId":"about/Pledge"},{"type":"link","label":"FAQ","href":"/spec-untp/docs/about/FAQ","docId":"about/FAQ"}],"href":"/spec-untp/docs/about/"},{"type":"category","label":"Specification","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Architecture","href":"/spec-untp/docs/specification/Architecture","docId":"specification/Architecture"},{"type":"link","label":"Digitial Product Passport","href":"/spec-untp/docs/specification/DigitalProductPassport","docId":"specification/DigitalProductPassport"},{"type":"link","label":"Conformity Credential","href":"/spec-untp/docs/specification/ConformityCredential","docId":"specification/ConformityCredential"},{"type":"link","label":"Traceability Events","href":"/spec-untp/docs/specification/TraceabilityEvents","docId":"specification/TraceabilityEvents"},{"type":"link","label":"Identifiers","href":"/spec-untp/docs/specification/Identifiers","docId":"specification/Identifiers"},{"type":"link","label":"Vocabularies","href":"/spec-untp/docs/specification/Vocabularies","docId":"specification/Vocabularies"},{"type":"link","label":"Verifiable Credentials","href":"/spec-untp/docs/specification/VerifiableCredentials","docId":"specification/VerifiableCredentials"},{"type":"link","label":"Data Carriers","href":"/spec-untp/docs/specification/DataCarriers","docId":"specification/DataCarriers"},{"type":"link","label":"Trust Anchors","href":"/spec-untp/docs/specification/TrustAnchors","docId":"specification/TrustAnchors"},{"type":"link","label":"Trust Graphs","href":"/spec-untp/docs/specification/TrustGraphs","docId":"specification/TrustGraphs"},{"type":"link","label":"Confidentiality","href":"/spec-untp/docs/specification/Confidentiality","docId":"specification/Confidentiality"},{"type":"link","label":"Anti-Counterfeiting","href":"/spec-untp/docs/specification/Counterfeiting","docId":"specification/Counterfeiting"},{"type":"link","label":"Mass Balance","href":"/spec-untp/docs/specification/MassBalance","docId":"specification/MassBalance"},{"type":"link","label":"ESG Rules","href":"/spec-untp/docs/specification/Rules","docId":"specification/Rules"}],"href":"/spec-untp/docs/specification/"},{"type":"category","label":"Business Case","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"For Regulators","href":"/spec-untp/docs/business-case/Regulators","docId":"business-case/Regulators"},{"type":"link","label":"For Industry","href":"/spec-untp/docs/business-case/Industry","docId":"business-case/Industry"},{"type":"link","label":"For Industry Associations","href":"/spec-untp/docs/business-case/Associations","docId":"business-case/Associations"},{"type":"link","label":"For Certifiers","href":"/spec-untp/docs/business-case/Certifiers","docId":"business-case/Certifiers"},{"type":"link","label":"For Software Vendors","href":"/spec-untp/docs/business-case/Software","docId":"business-case/Software"}],"href":"/spec-untp/docs/business-case/"},{"type":"category","label":"Tools and support","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Test Cases","href":"/spec-untp/docs/tools-and-support/TestCases","docId":"tools-and-support/TestCases"},{"type":"link","label":"Test Service","href":"/spec-untp/docs/tools-and-support/TestService","docId":"tools-and-support/TestService"},{"type":"link","label":"Tools","href":"/spec-untp/docs/tools-and-support/Tools","docId":"tools-and-support/Tools"},{"type":"link","label":"Support","href":"/spec-untp/docs/tools-and-support/Support","docId":"tools-and-support/Support"}],"href":"/spec-untp/docs/tools-and-support/"},{"type":"category","label":"Extensions Register","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Extensions Methodology","href":"/spec-untp/docs/extensions/ExtensionsMethodology","docId":"extensions/ExtensionsMethodology"},{"type":"link","label":"Extensions Register","href":"/spec-untp/docs/extensions/ExtensionsRegister","docId":"extensions/ExtensionsRegister"}],"href":"/spec-untp/docs/extensions/"},{"type":"category","label":"Implementations Register","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Conformity","href":"/spec-untp/docs/implementations/Conformity","docId":"implementations/Conformity"},{"type":"link","label":"Register","href":"/spec-untp/docs/implementations/Register","docId":"implementations/Register"}],"href":"/spec-untp/docs/implementations/"}]},"docs":{"about/FAQ":{"id":"about/FAQ","title":"FAQ","description":"","sidebar":"tutorialSidebar"},"about/Goals":{"id":"about/Goals","title":"Audience, Benefits & Goals","description":"The primary goal of UNTP is to make significant reductions in the incidence of greenwashing by giving unsustainable behaviour nowhere to hide. This will also uplift the value of legitimate ESG credentials from supply chain actors that have implemented sustainable practices. UNTP will have achieved it\'s purpose when","sidebar":"tutorialSidebar"},"about/Governance":{"id":"about/Governance","title":"Governance","description":"Management process","sidebar":"tutorialSidebar"},"about/index":{"id":"about/index","title":"About the UNTP","description":"The United Nations Transparency Protocol (UNTP) aims to support governments and industry with practical measures to counter greenwashing by implementing supply chain traceability and transparency at the scale needed to achieve meaningful impacts on global sustainability outcomes.","sidebar":"tutorialSidebar"},"about/Pledge":{"id":"about/Pledge","title":"Pledge","description":"","sidebar":"tutorialSidebar"},"about/Requirements":{"id":"about/Requirements","title":"Requirements","description":"This page provides a summary of the high level business requirements for UNTP, grouped into 7 catgories. Each requirement is linked to the page(s) where the solution to the requirement is defined.","sidebar":"tutorialSidebar"},"business-case/Associations":{"id":"business-case/Associations","title":"For Industry Associations","description":"","sidebar":"tutorialSidebar"},"business-case/Certifiers":{"id":"business-case/Certifiers","title":"For Certifiers","description":"","sidebar":"tutorialSidebar"},"business-case/index":{"id":"business-case/index","title":"Business Case","description":"","sidebar":"tutorialSidebar"},"business-case/Industry":{"id":"business-case/Industry","title":"For Industry","description":"","sidebar":"tutorialSidebar"},"business-case/Regulators":{"id":"business-case/Regulators","title":"For Regulators","description":"","sidebar":"tutorialSidebar"},"business-case/Software":{"id":"business-case/Software","title":"For Software Vendors","description":"","sidebar":"tutorialSidebar"},"extensions/ExtensionsMethodology":{"id":"extensions/ExtensionsMethodology","title":"Extensions Methodology","description":"","sidebar":"tutorialSidebar"},"extensions/ExtensionsRegister":{"id":"extensions/ExtensionsRegister","title":"Extensions Register","description":"","sidebar":"tutorialSidebar"},"extensions/index":{"id":"extensions/index","title":"Extensions Register","description":"","sidebar":"tutorialSidebar"},"implementations/Conformity":{"id":"implementations/Conformity","title":"Conformity","description":"","sidebar":"tutorialSidebar"},"implementations/index":{"id":"implementations/index","title":"Implementations Register","description":"","sidebar":"tutorialSidebar"},"implementations/Register":{"id":"implementations/Register","title":"Register","description":"","sidebar":"tutorialSidebar"},"specification/Architecture":{"id":"specification/Architecture","title":"Architecture","description":"Overview","sidebar":"tutorialSidebar"},"specification/Confidentiality":{"id":"specification/Confidentiality","title":"Confidentiality","description":"There is a balance between the demands of transparency (more supply chain visibility means it\'s harder to hide greenwshing) and confidentiality (share too much data and you risk expososing commercial secrets). A key UNTP principle is that every supply chain actor should be able to choose their own balance between transparency and confidentiality. To achieve this, UNTP defines six data confidentiality patterns with different degrees of data protection so that they can be appropriately combined to meet the confidentiality goals of each party. This includes the ability to selectively redact data from credentials received from upstream suppliers before passing them on to downstream buyers - without affecting the cryptographic integrity of the data.","sidebar":"tutorialSidebar"},"specification/ConformityCredential":{"id":"specification/ConformityCredential","title":"Conformity Credential","description":"Overview","sidebar":"tutorialSidebar"},"specification/Counterfeiting":{"id":"specification/Counterfeiting","title":"Anti-Counterfeiting","description":"Overview","sidebar":"tutorialSidebar"},"specification/DataCarriers":{"id":"specification/DataCarriers","title":"Data Carriers","description":"Overview","sidebar":"tutorialSidebar"},"specification/DigitalProductPassport":{"id":"specification/DigitalProductPassport","title":"Digitial Product Passport","description":"Overview","sidebar":"tutorialSidebar"},"specification/Identifiers":{"id":"specification/Identifiers","title":"Identifiers","description":"Overview","sidebar":"tutorialSidebar"},"specification/index":{"id":"specification/index","title":"Specification","description":"The specification is the heart of UNTP. It defines the detailed specifications for interoperable implementations. This page provides an outline of the purpose and scope of each component of the specification.","sidebar":"tutorialSidebar"},"specification/MassBalance":{"id":"specification/MassBalance","title":"Mass Balance","description":"Overview","sidebar":"tutorialSidebar"},"specification/Rules":{"id":"specification/Rules","title":"ESG Rules","description":"Overview","sidebar":"tutorialSidebar"},"specification/TraceabilityEvents":{"id":"specification/TraceabilityEvents","title":"Traceability Events","description":"Overview","sidebar":"tutorialSidebar"},"specification/TrustAnchors":{"id":"specification/TrustAnchors","title":"Trust Anchors","description":"Overview","sidebar":"tutorialSidebar"},"specification/TrustGraphs":{"id":"specification/TrustGraphs","title":"Trust Graphs","description":"Overview","sidebar":"tutorialSidebar"},"specification/VerifiableCredentials":{"id":"specification/VerifiableCredentials","title":"Verifiable Credentials","description":"The World-Wide-Web Consortium (W3C) has defined a standard called Verifiable Credentials (VCs). A VC is a portable digital version of everyday credentials like education certificates, permits, licenses, registrations, and so on. VCs are digitally signed by the issuing party and are tamper proof, privacy preserving, revokable, and digitally verifiable. The UN has previously assessed this standard and has recommended it\'s use for a variety of cross border trade use cases in a recent white paper. VCs are inherently decentralised and so are an excellent fit for UNTP which recommends that passports, credentials, and traceability events are all issued as W3C VCs. A related W3C standard called Decentralised Identifiers (DIDs) provides a mechanism to manage the cryptographic keys used by verifiable credentials and also to link multiple credentials into verifiable trust graphs. DIDs are not the same as the business / product / location identifiers maintained by authoritative agencies - but can be linked to them.","sidebar":"tutorialSidebar"},"specification/Vocabularies":{"id":"specification/Vocabularies","title":"Vocabularies","description":"Overview","sidebar":"tutorialSidebar"},"tools-and-support/index":{"id":"tools-and-support/index","title":"Tools and support","description":"","sidebar":"tutorialSidebar"},"tools-and-support/Support":{"id":"tools-and-support/Support","title":"Support","description":"","sidebar":"tutorialSidebar"},"tools-and-support/TestCases":{"id":"tools-and-support/TestCases","title":"Test Cases","description":"","sidebar":"tutorialSidebar"},"tools-and-support/TestService":{"id":"tools-and-support/TestService","title":"Test Service","description":"","sidebar":"tutorialSidebar"},"tools-and-support/Tools":{"id":"tools-and-support/Tools","title":"Tools","description":"","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/940a6c6b.ea30e362.js b/assets/js/940a6c6b.ea30e362.js deleted file mode 100644 index ce24d0ee..00000000 --- a/assets/js/940a6c6b.ea30e362.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[1660],{5318:(t,e,i)=>{i.d(e,{Zo:()=>d,kt:()=>g});var o=i(7378);function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function a(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,o)}return i}function r(t){for(var e=1;e=0||(n[i]=t[i]);return n}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(n[i]=t[i])}return n}var A=o.createContext({}),c=function(t){var e=o.useContext(A),i=e;return t&&(i="function"==typeof t?t(e):r(r({},e),t)),i},d=function(t){var e=c(t.components);return o.createElement(A.Provider,{value:e},t.children)},l={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},p=o.forwardRef((function(t,e){var i=t.components,n=t.mdxType,a=t.originalType,A=t.parentName,d=s(t,["components","mdxType","originalType","parentName"]),p=c(i),g=n,u=p["".concat(A,".").concat(g)]||p[g]||l[g]||a;return i?o.createElement(u,r(r({ref:e},d),{},{components:i})):o.createElement(u,r({ref:e},d))}));function g(t,e){var i=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var a=i.length,r=new Array(a);r[0]=p;var s={};for(var A in e)hasOwnProperty.call(e,A)&&(s[A]=e[A]);s.originalType=t,s.mdxType="string"==typeof t?t:n,r[1]=s;for(var c=2;c{i.d(e,{ZP:()=>r});var o=i(5773),n=(i(7378),i(5318));const a={toc:[]};function r(t){let{components:e,...i}=t;return(0,n.kt)("wrapper",(0,o.Z)({},a,i,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}r.isMDXComponent=!0},9960:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>A,toc:()=>d});var o=i(5773),n=(i(7378),i(5318)),a=i(5611);const r={sidebar_position:5,title:"Digitial Product Passport"},s=void 0,A={unversionedId:"specification/DigitalProductPassport",id:"specification/DigitalProductPassport",title:"Digitial Product Passport",description:"Overview",source:"@site/docs/specification/DigitalProductPassport.md",sourceDirName:"specification",slug:"/specification/DigitalProductPassport",permalink:"/spec-untp/docs/specification/DigitalProductPassport",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/DigitalProductPassport.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,title:"Digitial Product Passport"},sidebar:"tutorialSidebar",previous:{title:"Architecture",permalink:"/spec-untp/docs/specification/Architecture"},next:{title:"Conformity Credential",permalink:"/spec-untp/docs/specification/ConformityCredential"}},c={},d=[{value:"Overview",id:"overview",level:2},{value:"Conceptual Model",id:"conceptual-model",level:2},{value:"Logical Model & Schema",id:"logical-model--schema",level:2},{value:"Sample File",id:"sample-file",level:2}],l={toc:d};function p(t){let{components:e,...r}=t;return(0,n.kt)("wrapper",(0,o.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)(a.ZP,{mdxType:"Disclaimer"}),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"The digital product passport (DPP) is issued by the shipper of goods and is the carrier of ",(0,n.kt)("strong",{parentName:"p"},"product and sustainability information")," for every serialised product item (or product batch) that is shipped between actors in the value chain. It is deliberately ",(0,n.kt)("strong",{parentName:"p"},"simple and lightweight")," and is designed to carry the minimum necessary data at the ",(0,n.kt)("strong",{parentName:"p"},"granularity")," needed by the receiver of goods - such as the scope 3 emissions in a product shipment. The passport contains links to ",(0,n.kt)("strong",{parentName:"p"},"conformity credentials")," which add trust to the ESG claims in the passport. The passport also contains links to ",(0,n.kt)("strong",{parentName:"p"},"traceability events"),' which provide the "glue" to follow the linked-data trail (subject to confidentiality constraints) from finished product back to raw materials. The UNTP DPP does not conflict with national regulations such as the EU DPP. In fact, it can usefully be conceptualised as the ',(0,n.kt)("strong",{parentName:"p"},"upstream B2B feedstock")," that provides the data and evidence needed for the issuing of high quality national level product passports."),(0,n.kt)("h2",{id:"conceptual-model"},"Conceptual Model"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Digital Product passport conceptual model",src:i(6761).Z,width:"2000",height:"1125"})),(0,n.kt)("h2",{id:"logical-model--schema"},"Logical Model & Schema"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Digital Product Passport data model",src:i(8360).Z,width:"1467",height:"866"})),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/readme/render"},"Browsable data model documentation"))),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/jsonldContexts/ProductPassport.jsonld?class=ProductPassport"},"JSON-LD @context file"))),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/jsonSchemas/render.json?class=ProductPassport"},"JSON Schema"))),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/redoc.html?url=/user/unece/DigitalProductPassport/v/working/artefacts/openapi/render.json"},"Browsable API documentation"))),(0,n.kt)("h2",{id:"sample-file"},"Sample File"),(0,n.kt)("p",null,"Sample DPP JSON for a packaged meat product. Includes render template. ",(0,n.kt)("a",{parentName:"p",href:"https://web.agtrace.showthething.com/verify?q=%7B%22payload%22%3A%7B%22uri%22%3A%22https%3A%2F%2Fagtrace-processor-verifiable-credentials.s3.ap-southeast-2.amazonaws.com%2F9359502000041%2F14713cf0-b81c-497c-a633-985cbb4bd5c4.json%22%7D%7D"},"Human browsable rendered version")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},'{\n "@context": [\n "https://www.w3.org/2018/credentials/v1",\n "https://w3id.org/vc-revocation-list-2020/v1",\n "https://w3id.org/security/suites/jws-2020/v1",\n "https://vckit-contexts.s3.ap-southeast-2.amazonaws.com/dev-render-method-context.json",\n "https://dpp-json-ld.s3.ap-southeast-2.amazonaws.com/dppld.json",\n "https://w3id.org/security/suites/jws-2020/v1"\n ],\n "type": [\n "VerifiableCredential",\n "ProductPassportCredential"\n ],\n "issuer": {\n "id": "did:web:processor.agtrace.showthething.com"\n },\n "credentialSubject": {\n "product": {\n "productId": "9359502000041",\n "productClass": "Beef Silverside",\n "weight": "500 grams",\n "image": "https://gs1ausaactivateprod1.blob.core.windows.net/935950200000/09359502000041/AgTace-Meats-Silverside.png?sv=2019-07-07&sr=c&si=read&sig=1b9unDt%2FV7M0jCuNIbn47AaES0XK%2FOgL6QbRcuBGPOw%3D",\n "description": "Deforestation-free Beef Silverside",\n "manufacturer": {\n "id": "https://agtraceprocessors.com.au/",\n "name": "Pete\'s Meats"\n }\n },\n "batch": {\n "batchId": "5698754215",\n "manufacturedAt": {\n "id": "https://resolver.showthething.com/414/9377779541302",\n "name": "name",\n "operatedBy": {\n "id": "https://agtraceprocessors.com.au/",\n "name": "AgTrace Processors"\n }\n },\n "manufacturedDate": "Tue Jan 09 2024",\n "provenance": [\n {\n "country": "AU",\n "percentage": 100\n }\n ],\n "sustainabilityInfo": [\n {\n "Topic": "environment.deforestation",\n "Criteria": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32023R1115",\n "Evidence": "https://web.agtrace.showthething.com/verify?q=%7B%22payload%22%3A%20%7B%22uri%22%3A%22https%3A%2F%2Fagtrace-verifiable-credentials.s3.ap-southeast-2.amazonaws.com%2Fprocessor-df-cert.json%22%7D%7D",\n "metric": [\n {\n "Metric": "Canopy cover reduction",\n "Unit": "% per km^2",\n "Value": 0\n }\n ],\n "compliance": true\n }\n ],\n "traceabilityInfo": [\n {\n "EventReference": "https://processor.dlr.agtrace.showthething.com/gtin/9359502000041/3101/000001/13/240109/21/12578901?linkType=gs1:epcis",\n "EventType": "transformation"\n }\n ]\n },\n "sustainabilityScore": 65,\n "trustScore": 48\n },\n "render": [\n {\n "template": "

Pete\'s Meats

{{credentialSubject.sustainabilityScore}}%

Sustainability
Score

{{credentialSubject.trustScore}}%

Confidence
Level
Product Information
Manufacturer {{credentialSubject.product.manufacturer.name}}
Type {{credentialSubject.product.productClass}}
GTIN {{credentialSubject.product.productId}}
Manuf. Date {{credentialSubject.batch.manufacturedDate}}
Batch No. {{credentialSubject.batch.batchId}}
Weight {{credentialSubject.product.weight}}
Description {{credentialSubject.product.description}}
Origin Information
{{#each credentialSubject.batch.provenance}}
{{this.country}}
{{this.percentage}}%
{{/each}}
Sustainability Information
{{#each credentialSubject.batch.sustainabilityInfo}}
{{this.Topic}}:
{{this.metric.0.Value}} {{this.metric.0.Unit}}
Evidence:
{{/each}}
Traceability Information
{{#each credentialSubject.batch.traceabilityInfo}}
Event:
Event Type:
{{this.EventType}}
{{/each}}
",\n "@type": "WebRenderingTemplate2022"\n }\n ],\n "credentialStatus": {\n "id": "https://api.vckit.showthething.com/credentials/status/revocation-list-2020/did_web_processor.agtrace.showthething.com/66",\n "type": "RevocationList2020Status",\n "revocationListIndex": 4,\n "revocationListCredential": "https://api.vckit.showthething.com/credentials/status/revocation-list-2020/did_web_processor.agtrace.showthething.com/66"\n },\n "issuanceDate": "2024-01-09T08:28:37.144Z",\n "proof": {\n "type": "JsonWebSignature2020",\n "created": "2024-01-09T08:28:37Z",\n "verificationMethod": "did:web:processor.agtrace.showthething.com#7dfafe8a248c42c1eb9f8f549cc85ca24cd1d1764a31cf726504c5667396dba2-key-0",\n "proofPurpose": "assertionMethod",\n "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..ELbpu5IR0zeXdktOSNO8jffdewDRoKPcVcPDtC-c_Scj6uBrUZv-T0VvM1FAtjXs1ClJS5hDpYs9_SrA0Br4CA"\n }\n}\n')))}p.isMDXComponent=!0},6761:(t,e,i)=>{i.d(e,{Z:()=>o});const o=i.p+"assets/images/DigitalProductPassport-303217756496d623b6b3e4b27cb94884.png"},8360:(t,e,i)=>{i.d(e,{Z:()=>o});const o=i.p+"assets/images/DigitalProductPassport-b413cc8b89957d4f0467e55eb0fb15e9.svg"}}]); \ No newline at end of file diff --git a/assets/js/940a6c6b.f9d150f1.js b/assets/js/940a6c6b.f9d150f1.js new file mode 100644 index 00000000..3650a298 --- /dev/null +++ b/assets/js/940a6c6b.f9d150f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[1660],{5318:(t,e,i)=>{i.d(e,{Zo:()=>d,kt:()=>g});var o=i(7378);function n(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function a(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,o)}return i}function r(t){for(var e=1;e=0||(n[i]=t[i]);return n}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(n[i]=t[i])}return n}var A=o.createContext({}),c=function(t){var e=o.useContext(A),i=e;return t&&(i="function"==typeof t?t(e):r(r({},e),t)),i},d=function(t){var e=c(t.components);return o.createElement(A.Provider,{value:e},t.children)},l={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},p=o.forwardRef((function(t,e){var i=t.components,n=t.mdxType,a=t.originalType,A=t.parentName,d=s(t,["components","mdxType","originalType","parentName"]),p=c(i),g=n,u=p["".concat(A,".").concat(g)]||p[g]||l[g]||a;return i?o.createElement(u,r(r({ref:e},d),{},{components:i})):o.createElement(u,r({ref:e},d))}));function g(t,e){var i=arguments,n=e&&e.mdxType;if("string"==typeof t||n){var a=i.length,r=new Array(a);r[0]=p;var s={};for(var A in e)hasOwnProperty.call(e,A)&&(s[A]=e[A]);s.originalType=t,s.mdxType="string"==typeof t?t:n,r[1]=s;for(var c=2;c{i.d(e,{ZP:()=>r});var o=i(5773),n=(i(7378),i(5318));const a={toc:[]};function r(t){let{components:e,...i}=t;return(0,n.kt)("wrapper",(0,o.Z)({},a,i,{components:e,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}r.isMDXComponent=!0},9960:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>A,toc:()=>d});var o=i(5773),n=(i(7378),i(5318)),a=i(5611);const r={sidebar_position:5,title:"Digitial Product Passport"},s=void 0,A={unversionedId:"specification/DigitalProductPassport",id:"specification/DigitalProductPassport",title:"Digitial Product Passport",description:"Overview",source:"@site/docs/specification/DigitalProductPassport.md",sourceDirName:"specification",slug:"/specification/DigitalProductPassport",permalink:"/spec-untp/docs/specification/DigitalProductPassport",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/DigitalProductPassport.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5,title:"Digitial Product Passport"},sidebar:"tutorialSidebar",previous:{title:"Architecture",permalink:"/spec-untp/docs/specification/Architecture"},next:{title:"Conformity Credential",permalink:"/spec-untp/docs/specification/ConformityCredential"}},c={},d=[{value:"Overview",id:"overview",level:2},{value:"Conceptual Model",id:"conceptual-model",level:2},{value:"Logical Model & Schema",id:"logical-model--schema",level:2},{value:"Sample File",id:"sample-file",level:2}],l={toc:d};function p(t){let{components:e,...r}=t;return(0,n.kt)("wrapper",(0,o.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,n.kt)(a.ZP,{mdxType:"Disclaimer"}),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"The digital product passport (DPP) is issued by the shipper of goods and is the carrier of ",(0,n.kt)("strong",{parentName:"p"},"product and sustainability information")," for every serialised product item (or product batch) that is shipped between actors in the value chain. It is deliberately ",(0,n.kt)("strong",{parentName:"p"},"simple and lightweight")," and is designed to carry the minimum necessary data at the ",(0,n.kt)("strong",{parentName:"p"},"granularity")," needed by the receiver of goods - such as the scope 3 emissions in a product shipment. The passport contains links to ",(0,n.kt)("strong",{parentName:"p"},"conformity credentials")," which add trust to the ESG claims in the passport. The passport also contains links to ",(0,n.kt)("strong",{parentName:"p"},"traceability events"),' which provide the "glue" to follow the linked-data trail (subject to confidentiality constraints) from finished product back to raw materials. The UNTP DPP does not conflict with national regulations such as the EU DPP. In fact, it can usefully be conceptualised as the ',(0,n.kt)("strong",{parentName:"p"},"upstream B2B feedstock")," that provides the data and evidence needed for the issuing of high quality national level product passports."),(0,n.kt)("h2",{id:"conceptual-model"},"Conceptual Model"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Digital Product passport conceptual model",src:i(6761).Z,width:"2000",height:"1125"})),(0,n.kt)("h2",{id:"logical-model--schema"},"Logical Model & Schema"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Digital Product Passport data model",src:i(8360).Z,width:"1467",height:"866"})),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/readme/render"},"Browsable data model documentation"))),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/jsonldContexts/ProductPassport.jsonld?class=ProductPassport"},"JSON-LD @context file"))),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/user/unece/DigitalProductPassport/v/working/artefacts/jsonSchemas/render.json?class=ProductPassport"},"JSON Schema"))),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("a",{parentName:"strong",href:"https://jargon.sh/redoc.html?url=/user/unece/DigitalProductPassport/v/working/artefacts/openapi/render.json"},"Browsable API documentation"))),(0,n.kt)("h2",{id:"sample-file"},"Sample File"),(0,n.kt)("p",null,"Sample DPP JSON for a packaged meat product. Includes render template. ",(0,n.kt)("a",{parentName:"p",href:"https://web.agtrace.showthething.com/verify?q=%7B%22payload%22%3A%7B%22uri%22%3A%22https%3A%2F%2Fagtrace-processor-verifiable-credentials.s3.ap-southeast-2.amazonaws.com%2F9359502000041%2F14713cf0-b81c-497c-a633-985cbb4bd5c4.json%22%7D%7D"},"Human browsable rendered version")),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},'{\n "@context": [\n "https://www.w3.org/2018/credentials/v1",\n "https://w3id.org/vc-revocation-list-2020/v1",\n "https://w3id.org/security/suites/jws-2020/v1",\n "https://vckit-contexts.s3.ap-southeast-2.amazonaws.com/dev-render-method-context.json",\n "https://dpp-json-ld.s3.ap-southeast-2.amazonaws.com/dppld.json",\n "https://w3id.org/security/suites/jws-2020/v1"\n ],\n "type": [\n "VerifiableCredential",\n "ProductPassportCredential"\n ],\n "issuer": {\n "id": "did:web:processor.agtrace.showthething.com"\n },\n "credentialSubject": {\n "product": {\n "productId": "9359502000041",\n "productClass": "Beef Silverside",\n "weight": "500 grams",\n "image": "https://gs1ausaactivateprod1.blob.core.windows.net/935950200000/09359502000041/AgTace-Meats-Silverside.png?sv=2019-07-07&sr=c&si=read&sig=1b9unDt%2FV7M0jCuNIbn47AaES0XK%2FOgL6QbRcuBGPOw%3D",\n "description": "Deforestation-free Beef Silverside",\n "manufacturer": {\n "id": "https://agtraceprocessors.com.au/",\n "name": "Pete\'s Meats"\n }\n },\n "batch": {\n "batchId": "5698754215",\n "manufacturedAt": {\n "id": "https://resolver.showthething.com/414/9377779541302",\n "name": "name",\n "operatedBy": {\n "id": "https://agtraceprocessors.com.au/",\n "name": "AgTrace Processors"\n }\n },\n "manufacturedDate": "Tue Jan 09 2024",\n "provenance": [\n {\n "country": "AU",\n "percentage": 100\n }\n ],\n "sustainabilityInfo": [\n {\n "Topic": "environment.deforestation",\n "Criteria": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32023R1115",\n "Evidence": "https://web.agtrace.showthething.com/verify?q=%7B%22payload%22%3A%20%7B%22uri%22%3A%22https%3A%2F%2Fagtrace-verifiable-credentials.s3.ap-southeast-2.amazonaws.com%2Fprocessor-df-cert.json%22%7D%7D",\n "metric": [\n {\n "Metric": "Canopy cover reduction",\n "Unit": "% per km^2",\n "Value": 0\n }\n ],\n "compliance": true\n }\n ],\n "traceabilityInfo": [\n {\n "EventReference": "https://processor.dlr.agtrace.showthething.com/gtin/9359502000041/3101/000001/13/240109/21/12578901?linkType=gs1:epcis",\n "EventType": "transformation"\n }\n ]\n },\n "sustainabilityScore": 65,\n "trustScore": 48\n },\n "render": [\n {\n "template": "

Pete\'s Meats

{{credentialSubject.sustainabilityScore}}%

Sustainability
Score

{{credentialSubject.trustScore}}%

Confidence
Level
Product Information
Manufacturer {{credentialSubject.product.manufacturer.name}}
Type {{credentialSubject.product.productClass}}
GTIN {{credentialSubject.product.productId}}
Manuf. Date {{credentialSubject.batch.manufacturedDate}}
Batch No. {{credentialSubject.batch.batchId}}
Weight {{credentialSubject.product.weight}}
Description {{credentialSubject.product.description}}
Origin Information
{{#each credentialSubject.batch.provenance}}
{{this.country}}
{{this.percentage}}%
{{/each}}
Sustainability Information
{{#each credentialSubject.batch.sustainabilityInfo}}
{{this.Topic}}:
{{this.metric.0.Value}} {{this.metric.0.Unit}}
Evidence:
{{/each}}
Traceability Information
{{#each credentialSubject.batch.traceabilityInfo}}
Event:
Event Type:
{{this.EventType}}
{{/each}}
",\n "@type": "WebRenderingTemplate2022"\n }\n ],\n "credentialStatus": {\n "id": "https://api.vckit.showthething.com/credentials/status/revocation-list-2020/did_web_processor.agtrace.showthething.com/66",\n "type": "BitstringStatusListEntry",\n "revocationListIndex": 4,\n "revocationListCredential": "https://api.vckit.showthething.com/credentials/status/revocation-list-2020/did_web_processor.agtrace.showthething.com/66"\n },\n "issuanceDate": "2024-01-09T08:28:37.144Z",\n "proof": {\n "type": "JsonWebSignature2020",\n "created": "2024-01-09T08:28:37Z",\n "verificationMethod": "did:web:processor.agtrace.showthething.com#7dfafe8a248c42c1eb9f8f549cc85ca24cd1d1764a31cf726504c5667396dba2-key-0",\n "proofPurpose": "assertionMethod",\n "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..ELbpu5IR0zeXdktOSNO8jffdewDRoKPcVcPDtC-c_Scj6uBrUZv-T0VvM1FAtjXs1ClJS5hDpYs9_SrA0Br4CA"\n }\n}\n')))}p.isMDXComponent=!0},6761:(t,e,i)=>{i.d(e,{Z:()=>o});const o=i.p+"assets/images/DigitalProductPassport-303217756496d623b6b3e4b27cb94884.png"},8360:(t,e,i)=>{i.d(e,{Z:()=>o});const o=i.p+"assets/images/DigitalProductPassport-b413cc8b89957d4f0467e55eb0fb15e9.svg"}}]); \ No newline at end of file diff --git a/assets/js/fa231c41.916e723c.js b/assets/js/fa231c41.34aec809.js similarity index 72% rename from assets/js/fa231c41.916e723c.js rename to assets/js/fa231c41.34aec809.js index 76436705..621b11e1 100644 --- a/assets/js/fa231c41.916e723c.js +++ b/assets/js/fa231c41.34aec809.js @@ -1 +1 @@ -"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[855],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7378);function i(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,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),f=i,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:i,a[1]=s;for(var l=2;l{n.d(t,{ZP:()=>a});var r=n(5773),i=(n(7378),n(5318));const o={toc:[]};function a(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},o,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}a.isMDXComponent=!0},2678:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var r=n(5773),i=(n(7378),n(5318)),o=n(5611);const a={sidebar_position:52,title:"ESG Rules"},s=void 0,c={unversionedId:"specification/Rules",id:"specification/Rules",title:"ESG Rules",description:"Overview",source:"@site/docs/specification/Rules.md",sourceDirName:"specification",slug:"/specification/Rules",permalink:"/spec-untp/docs/specification/Rules",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/Rules.md",tags:[],version:"current",sidebarPosition:52,frontMatter:{sidebar_position:52,title:"ESG Rules"},sidebar:"tutorialSidebar",previous:{title:"Mass Balance",permalink:"/spec-untp/docs/specification/MassBalance"},next:{title:"GS1 Binding",permalink:"/spec-untp/docs/specification/GS1Binding"}},l={},p=[{value:"Overview",id:"overview",level:2}],u={toc:p};function d(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(o.ZP,{mdxType:"Disclaimer"}),(0,i.kt)("h2",{id:"overview"},"Overview"),(0,i.kt)("p",null,'Yet another greenwashing attack vector is to deliberately apply incorrect rules to the determination of criteria such as emissions intensity. The verification question in this case is "yes, but how do I know you calculated it right?". The UNTP proposes an independent calculator service offered either by the standards body or regulator that defined the rules or by an accredited service provider. The Supply chain actor presents raw data to the calculator which returns with a signed credential confirming that the rules were correctly applied. This protocol has an additional benefit for legitimate actors if widely adopted by rules authorities - which is to significantly simplify the assessment of compliance against multiple different rules. By separating observed facts from the assessment of those facts against specific rules then it becomes relatively simple to test compliance against multiple standards and regulations.'))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[855],{5318:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7378);function i(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,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=l(n),f=i,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:i,a[1]=s;for(var l=2;l{n.d(t,{ZP:()=>a});var r=n(5773),i=(n(7378),n(5318));const o={toc:[]};function a(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},o,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Please note that this content is under development and is not ready for implementation. This status message will be updated as content development progresses.")))}a.isMDXComponent=!0},2678:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var r=n(5773),i=(n(7378),n(5318)),o=n(5611);const a={sidebar_position:52,title:"ESG Rules"},s=void 0,c={unversionedId:"specification/Rules",id:"specification/Rules",title:"ESG Rules",description:"Overview",source:"@site/docs/specification/Rules.md",sourceDirName:"specification",slug:"/specification/Rules",permalink:"/spec-untp/docs/specification/Rules",draft:!1,editUrl:"https://github.com/uncefact/spec-untp/edit/main/website/docs/specification/Rules.md",tags:[],version:"current",sidebarPosition:52,frontMatter:{sidebar_position:52,title:"ESG Rules"},sidebar:"tutorialSidebar",previous:{title:"Mass Balance",permalink:"/spec-untp/docs/specification/MassBalance"},next:{title:"Business Case",permalink:"/spec-untp/docs/business-case/"}},l={},p=[{value:"Overview",id:"overview",level:2}],u={toc:p};function d(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(o.ZP,{mdxType:"Disclaimer"}),(0,i.kt)("h2",{id:"overview"},"Overview"),(0,i.kt)("p",null,'Yet another greenwashing attack vector is to deliberately apply incorrect rules to the determination of criteria such as emissions intensity. The verification question in this case is "yes, but how do I know you calculated it right?". The UNTP proposes an independent calculator service offered either by the standards body or regulator that defined the rules or by an accredited service provider. The Supply chain actor presents raw data to the calculator which returns with a signed credential confirming that the rules were correctly applied. This protocol has an additional benefit for legitimate actors if widely adopted by rules authorities - which is to significantly simplify the assessment of compliance against multiple different rules. By separating observed facts from the assessment of those facts against specific rules then it becomes relatively simple to test compliance against multiple standards and regulations.'))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.062b0c1b.js b/assets/js/main.062b0c1b.js new file mode 100644 index 00000000..75b422a0 --- /dev/null +++ b/assets/js/main.062b0c1b.js @@ -0,0 +1,2 @@ +/*! For license information please see main.062b0c1b.js.LICENSE.txt */ +(self.webpackChunkspec_untp_website=self.webpackChunkspec_untp_website||[]).push([[179],{3427:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7378);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},3703:(e,t,n)=>{"use strict";var r=n(7378),a=n(1542),o=n(4289),i=n(2883),l=n(161);const s=[n(142),n(3815),n(4374),n(3801),n(9225)];var u=n(6623),c=n(5331),d=n(5473);function p(){return r.createElement("svg",{width:"0",height:"0",className:"hidden"},r.createElement("symbol",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 24 24",id:"github"},r.createElement("path",{d:"M12.04 0a12.035 12.035 0 0 0-3.731 23.479h.28c.257.012.508-.074.703-.241.237-.207.37-.508.36-.822v-1.304a.491.491 0 0 0-.19-.331.501.501 0 0 0-.41-.1c-2.699.581-3.27-1.104-3.3-1.214a4.654 4.654 0 0 0-1.736-2.197l-.15-.11a.732.732 0 0 1 .381-.07c.508.076.94.41 1.143.883a3.009 3.009 0 0 0 4.012 1.163c.151-.067.262-.2.301-.361.04-.46.24-.893.562-1.224a.501.501 0 0 0 .15-.531.491.491 0 0 0-.421-.351c-2.377-.271-4.814-1.103-4.814-5.205a4.012 4.012 0 0 1 1.063-2.789.491.491 0 0 0 .09-.521 3.57 3.57 0 0 1 .01-2.417A5.586 5.586 0 0 1 8.871 6.89c.123.085.279.107.42.06.897-.239 1.821-.36 2.749-.36a10.34 10.34 0 0 1 2.758.36.461.461 0 0 0 .411-.06c.731-.593 1.6-.99 2.527-1.153a3.55 3.55 0 0 1 0 2.387.481.481 0 0 0 .1.521 4.012 4.012 0 0 1 1.054 2.758c0 4.112-2.437 4.935-4.824 5.196a.491.491 0 0 0-.421.35c-.06.189 0 .394.15.522.449.469.672 1.11.612 1.755v3.19c-.005.315.131.616.37.822.304.23.7.302 1.064.19A12.035 12.035 0 0 0 12.04 0Z"})),r.createElement("symbol",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 33.057 33.057",id:"search"},r.createElement("g",{fill:"none","fill-rule":"evenodd",stroke:"currentColor","stroke-width":"1.5"},r.createElement("path",{d:"M21.723 7.934a9.75 9.721-45 0 1-.02 13.769 9.75 9.721-45 0 1-13.769.02 9.75 9.721-45 0 1 .021-13.768 9.75 9.721-45 0 1 13.768-.02z"}),r.createElement("path",{d:"M10.481 20.942V25",transform:"rotate(-45 17.925 7.425)"}))),r.createElement("symbol",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 24 24",id:"slack"},r.createElement("g",{"fill-rule":"nonzero"},r.createElement("path",{d:"M22.17 16.701h-7.34c-1.01 0-1.83-.815-1.83-1.82 0-1.005.82-1.82 1.83-1.82h7.34c1.01 0 1.83.815 1.83 1.82 0 1.005-.82 1.82-1.83 1.82ZM14.83 11.073c-1.01 0-1.83-.815-1.83-1.82V1.954c-.05-.68.286-1.332.871-1.687a1.839 1.839 0 0 1 1.908 0c.585.355.922 1.007.871 1.687v7.3a1.825 1.825 0 0 1-1.82 1.819ZM9.17 11.073H1.83c-1.01 0-1.83-.815-1.83-1.82 0-1.005.82-1.82 1.83-1.82h7.34c1.01 0 1.83.815 1.83 1.82 0 1.005-.82 1.82-1.83 1.82ZM9.17 24c-1.01 0-1.83-.815-1.83-1.82v-7.299c-.05-.68.286-1.332.871-1.687a1.839 1.839 0 0 1 1.908 0c.585.355.922 1.007.871 1.687v7.3A1.825 1.825 0 0 1 9.17 24ZM2.22 17.517A2.214 2.214 0 0 1 0 15.319a2.264 2.264 0 0 1 2.27-2.257h1.48c.405.005.73.333.73.735v1.472a2.254 2.254 0 0 1-2.26 2.248ZM10.27 4.59H8.78a2.254 2.254 0 0 1-2.26-2.248c-.003-.586.23-1.15.647-1.564A2.216 2.216 0 0 1 8.74.134 2.264 2.264 0 0 1 11 2.392v1.471c0 .401-.327.726-.73.726ZM15.26 24A2.264 2.264 0 0 1 13 21.743V20.27c0-.4.327-.726.73-.726h1.49a2.254 2.254 0 0 1 2.26 2.247c.003.587-.23 1.15-.647 1.564A2.216 2.216 0 0 1 15.26 24ZM21.73 11.073h-1.48a.738.738 0 0 1-.73-.736V8.865a2.254 2.254 0 0 1 2.26-2.247c1.222 0 2.214.982 2.22 2.198a2.264 2.264 0 0 1-2.27 2.257Z"}))))}function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t,r.createElement(p,null))}var m=n(5773),h=n(7092),g=n(353),b=n(8948),v=n(624),y=n(8831),w=n(3714),k=n(174),E=n(3149),S=n(1721),x=n(505);function C(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,w.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.Z)(),{pathname:r}=(0,c.TH)();return e+(0,S.applyTrailingSlash)((0,b.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function T(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:k.h})),n&&r.createElement(y.d,{image:n}),r.createElement(_,null),r.createElement(C,null),r.createElement(x.Z,{tag:E.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,m.Z)({key:t},e))))))}const A=new Map;function L(e){if(A.has(e.pathname))return{...e,pathname:A.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}var R=n(3427),P=n(3340);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r(t.default?.[e]??t[e])?.(...n)));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1));document.getElementById(e)?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),I(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(O,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const M=D,F="__docusaurus-base-url-issue-banner-container",B="__docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${F}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,z(e))),r.createElement("div",{id:F}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(U,null):null}function G(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,g.Z)(),i=(0,b.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(6293),H=n(6457);function Z(){const e=(0,H.Z)();return r.createElement(h.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(q.Z,null,r.createElement(P.M,null,r.createElement(R.t,null,r.createElement(f,null,r.createElement(G,null),r.createElement(T,null),r.createElement($,null),r.createElement(M,{location:L(t)},e)),r.createElement(Z,null))))}var W=n(6887);const Q=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();(document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode)?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(3361);const K=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),I(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;I(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},3340:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7378),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/spec-untp/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/spec-untp/docs","mainDocId":"about/index","docs":[{"id":"about/FAQ","path":"/spec-untp/docs/about/FAQ","sidebar":"tutorialSidebar"},{"id":"about/Goals","path":"/spec-untp/docs/about/Goals","sidebar":"tutorialSidebar"},{"id":"about/Governance","path":"/spec-untp/docs/about/Governance","sidebar":"tutorialSidebar"},{"id":"about/index","path":"/spec-untp/docs/about/","sidebar":"tutorialSidebar"},{"id":"about/Pledge","path":"/spec-untp/docs/about/Pledge","sidebar":"tutorialSidebar"},{"id":"about/Requirements","path":"/spec-untp/docs/about/Requirements","sidebar":"tutorialSidebar"},{"id":"business-case/Associations","path":"/spec-untp/docs/business-case/Associations","sidebar":"tutorialSidebar"},{"id":"business-case/Certifiers","path":"/spec-untp/docs/business-case/Certifiers","sidebar":"tutorialSidebar"},{"id":"business-case/index","path":"/spec-untp/docs/business-case/","sidebar":"tutorialSidebar"},{"id":"business-case/Industry","path":"/spec-untp/docs/business-case/Industry","sidebar":"tutorialSidebar"},{"id":"business-case/Regulators","path":"/spec-untp/docs/business-case/Regulators","sidebar":"tutorialSidebar"},{"id":"business-case/Software","path":"/spec-untp/docs/business-case/Software","sidebar":"tutorialSidebar"},{"id":"extensions/ExtensionsMethodology","path":"/spec-untp/docs/extensions/ExtensionsMethodology","sidebar":"tutorialSidebar"},{"id":"extensions/ExtensionsRegister","path":"/spec-untp/docs/extensions/ExtensionsRegister","sidebar":"tutorialSidebar"},{"id":"extensions/index","path":"/spec-untp/docs/extensions/","sidebar":"tutorialSidebar"},{"id":"implementations/Conformity","path":"/spec-untp/docs/implementations/Conformity","sidebar":"tutorialSidebar"},{"id":"implementations/index","path":"/spec-untp/docs/implementations/","sidebar":"tutorialSidebar"},{"id":"implementations/Register","path":"/spec-untp/docs/implementations/Register","sidebar":"tutorialSidebar"},{"id":"specification/Architecture","path":"/spec-untp/docs/specification/Architecture","sidebar":"tutorialSidebar"},{"id":"specification/Confidentiality","path":"/spec-untp/docs/specification/Confidentiality","sidebar":"tutorialSidebar"},{"id":"specification/ConformityCredential","path":"/spec-untp/docs/specification/ConformityCredential","sidebar":"tutorialSidebar"},{"id":"specification/Counterfeiting","path":"/spec-untp/docs/specification/Counterfeiting","sidebar":"tutorialSidebar"},{"id":"specification/DataCarriers","path":"/spec-untp/docs/specification/DataCarriers","sidebar":"tutorialSidebar"},{"id":"specification/DigitalProductPassport","path":"/spec-untp/docs/specification/DigitalProductPassport","sidebar":"tutorialSidebar"},{"id":"specification/Identifiers","path":"/spec-untp/docs/specification/Identifiers","sidebar":"tutorialSidebar"},{"id":"specification/index","path":"/spec-untp/docs/specification/","sidebar":"tutorialSidebar"},{"id":"specification/MassBalance","path":"/spec-untp/docs/specification/MassBalance","sidebar":"tutorialSidebar"},{"id":"specification/Rules","path":"/spec-untp/docs/specification/Rules","sidebar":"tutorialSidebar"},{"id":"specification/TraceabilityEvents","path":"/spec-untp/docs/specification/TraceabilityEvents","sidebar":"tutorialSidebar"},{"id":"specification/TrustAnchors","path":"/spec-untp/docs/specification/TrustAnchors","sidebar":"tutorialSidebar"},{"id":"specification/TrustGraphs","path":"/spec-untp/docs/specification/TrustGraphs","sidebar":"tutorialSidebar"},{"id":"specification/VerifiableCredentials","path":"/spec-untp/docs/specification/VerifiableCredentials","sidebar":"tutorialSidebar"},{"id":"specification/Vocabularies","path":"/spec-untp/docs/specification/Vocabularies","sidebar":"tutorialSidebar"},{"id":"tools-and-support/index","path":"/spec-untp/docs/tools-and-support/","sidebar":"tutorialSidebar"},{"id":"tools-and-support/Support","path":"/spec-untp/docs/tools-and-support/Support","sidebar":"tutorialSidebar"},{"id":"tools-and-support/TestCases","path":"/spec-untp/docs/tools-and-support/TestCases","sidebar":"tutorialSidebar"},{"id":"tools-and-support/TestService","path":"/spec-untp/docs/tools-and-support/TestService","sidebar":"tutorialSidebar"},{"id":"tools-and-support/Tools","path":"/spec-untp/docs/tools-and-support/Tools","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/spec-untp/docs/about/","label":"About the UNTP"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.1","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},6293:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7378),a=n(161),o=n(7092),i=n(1721),l=n(5944);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},161:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},7092:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(2883);function o(e){return r.createElement(a.ql,e)}},1884:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(5773),a=n(7378),o=n(4289),i=n(1721),l=n(353),s=n(5626),u=n(161);const c=a.createContext({collectLink:()=>{}});var d=n(8948);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=p||f;const C=(0,s.Z)(x),_=x?.replace("pathname://","");let T=void 0!==_?(A=_,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&C&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,P=u.Z.canUseIntersectionObserver,N=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!P&&C&&null!=T&&window.docusaurus.prefetch(T),()=>{P&&N.current&&N.current.disconnect()})),[N,T,P,C]);const I=T?.startsWith("#")??!1,D=!T||!C||I;return D||g||E.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:S,href:T},x&&!C&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(R,(0,r.Z)({},v,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,P&&e&&C&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=a.forwardRef(p)},7406:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},9213:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7378);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},5688:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},5626:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},8948:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7378),a=n(353),o=n(5626);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},353:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(3340);function o(){return(0,r.useContext)(a._)}},6457:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(3427);function o(){return(0,r.useContext)(a._)}},3361:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[a,o]=n;const i=r?`${r}.${a}`:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t}},6881:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7378);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},2935:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>p,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>f});var r=n(5331),a=n(353),o=n(5688);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e)?.[t];if(!r&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return r}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4374:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(8504),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3815:(e,t,n)=>{"use strict";n.r(t);var r=n(2349),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(3392)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},6125:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378);const a="iconExternalLink_nPrP";function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},5944:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ft});var r=n(7378),a=n(8944),o=n(6293),i=n(8831),l=n(5773),s=n(5331),u=n(9213),c=n(4993);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5484),b=n(174);const v="skipToContent_oPtH";function y(){return r.createElement(h,{className:v})}var w=n(624),k=n(10);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S="closeButton_J5rP";function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const C="content_bSb_";function _(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(C,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T="announcementBar_zJRd",A="announcementBarPlaceholder_NpUd",L="announcementBarClose_Jjdj",R="announcementBarContent_t7IR";function P(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:A}),r.createElement(_,{className:R}),i&&r.createElement(x,{onClick:n,className:L}))}var N=n(2335),O=n(3457);var I=n(1763),D=n(3471);const M=r.createContext(null);function F(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,D.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,I.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(M.Provider,{value:n},t)}function B(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function j(){const e=(0,r.useContext)(M);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,D.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:B(o)})),[a,o,t])}function z(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=j();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var U=n(5421),$=n(6457);function G(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function q(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const H={toggle:"toggle_ki11",toggleButton:"toggleButton_MMFG",darkToggleIcon:"darkToggleIcon_U96C",lightToggleIcon:"lightToggleIcon_lgto",toggleButtonDisabled:"toggleButtonDisabled_Uw7m"};function Z(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,$.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(H.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",H.toggleButton,!l&&H.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(G,{className:(0,a.Z)(H.toggleIcon,H.lightToggleIcon)}),r.createElement(q,{className:(0,a.Z)(H.toggleIcon,H.darkToggleIcon)})))}const V=r.memo(Z),W="darkNavbarColorModeToggle_m8pZ";function Q(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,U.I)();return a?null:r.createElement(V,{className:t,buttonClassName:"dark"===n?W:void 0,value:o,onChange:i})}var Y=n(898);function K(){return r.createElement(Y.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){const e=(0,N.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function J(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(K,null),r.createElement(Q,{className:"margin-right--md"}),r.createElement(X,null))}var ee=n(1884),te=n(8948),ne=n(5626);function re(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ae=n(6125);function oe(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const p=(0,te.Z)(a),f=(0,te.Z)(t),m=(0,te.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,ne.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(ae.Z,u&&{width:12,height:12}))};return o?r.createElement(ee.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(ee.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?re(n,t.pathname):t.pathname.startsWith(f)},d,g))}function ie(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(oe,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function le(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(oe,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function se(e){let{mobile:t=!1,position:n,...a}=e;const o=t?le:ie;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ue=n(376),ce=n(8862),de=n(353);function pe(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!re(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function fe(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(oe,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Te,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function me(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,de.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=pe(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ue.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(oe,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),f()}}),u.children??u.label),r.createElement(ue.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Te,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function he(e){let{mobile:t=!1,...n}=e;const a=t?me:fe;return r.createElement(a,n)}var ge=n(3714);function be(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const ve="iconLanguage_kvP7";var ye=n(7406);const we="searchBox_WqAV";function ke(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,we)},t)}var Ee=n(2935),Se=n(6100);var xe=n(4453);const Ce=e=>e.docs.find((t=>t.id===e.mainDocId));const _e={default:se,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,de.Z)(),p=(0,ge.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(he,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(be,{className:ve}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ke,{className:n},r.createElement(ye.Z,null))},dropdown:he,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ee.Iw)(a),s=(0,Se.vY)(t,a);return null===s?null:r.createElement(se,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ee.Iw)(a),s=(0,Se.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(se,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,Se.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(se,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,Ee.Iw)(n),m=(0,Ee.gB)(n),{savePreferredVersionName:h}=(0,xe.J)(n),g=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??Ce(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,Se.lO)(n)[0],v=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:Ce(b).path;return g.length<=1?r.createElement(se,(0,l.Z)({},c,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(he,(0,l.Z)({},c,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Te(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=_e[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ae(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Te,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Le(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Re(){const e=0===(0,w.L)().navbar.items.length,t=j();return r.createElement(r.Fragment,null,!e&&r.createElement(Le,{onClick:()=>t.hide()}),t.content)}function Pe(){const e=(0,N.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(z,{header:r.createElement(J,null),primaryMenu:r.createElement(Ae,null),secondaryMenu:r.createElement(Re,null)}):null}const Ne="navbarHideable_hhpl",Oe="navbarHidden_nmcs";function Ie(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function De(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,O.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ne,!s&&Oe],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ie,{onClick:i.toggle}),r.createElement(Pe,null))}var Me=n(1721);const Fe="errorBoundaryError_WE6Q";function Be(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function je(e){let{error:t}=e;const n=(0,Me.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Fe},n)}class ze extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}function Ue(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function $e(){const{toggle:e,shown:t}=(0,N.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Ue,null))}const Ge="colorModeToggle_Hewu";function qe(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(ze,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(Te,e)))))}function He(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Ze(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(He,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement($e,null),r.createElement(K,null),r.createElement(qe,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(qe,{items:a}),r.createElement(Q,{className:Ge}),!o&&r.createElement(ke,null,r.createElement(ye.Z,null)))})}function Ve(){return r.createElement(De,null,r.createElement(Ze,null))}function We(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,te.Z)(n),c=(0,te.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(ee.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,ne.Z)(a)&&r.createElement(ae.Z,null))}function Qe(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(We,{item:t}))}function Ye(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Qe,{key:t,item:e})))))}function Ke(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ye,{key:t,column:e}))))}function Xe(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(We,{item:t})}function Je(e){let{links:t}=e;return r.createElement("div",{className:"footer__links"},t.map(((e,t)=>r.createElement(r.Fragment,{key:t},r.createElement(Xe,{item:e})))))}function et(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Ke,{columns:t}):r.createElement(Je,{links:t})}var tt=n(4034);const nt="footerLogoLink_tutC";function rt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,te.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(tt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function at(e){let{logo:t}=e;return t.href?r.createElement(ee.Z,{href:t.href,className:nt,target:t.target},r.createElement(rt,{logo:t})):r.createElement(rt,{logo:t})}function ot(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function it(e){let{style:t,links:n,copyright:o}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"footer__container"},o,n))}function lt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(it,{style:o,links:n&&n.length>0&&r.createElement(et,{links:n}),logo:a&&r.createElement(at,{logo:a}),copyright:t&&r.createElement(ot,{copyright:t})})}const st=r.memo(lt),ut=(0,I.Qc)([U.S,k.pl,O.OC,xe.L5,i.VC,function(e){let{children:t}=e;return r.createElement(D.n2,null,r.createElement(N.M,null,r.createElement(F,null,t)))}]);function ct(e){let{children:t}=e;return r.createElement(ut,null,t)}function dt(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Be,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(je,{error:t})))))}const pt="mainWrapper_MB5r";function ft(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,b.t)(),r.createElement(ct,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(P,null),r.createElement(Ve,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,pt,l)},r.createElement(o.Z,{fallback:e=>r.createElement(dt,e)},t)),!n&&r.createElement(st,null))}},898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(5773),a=n(7378),o=n(1884),i=n(8948),l=n(353),s=n(624),u=n(4034);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},f,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},505:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7378),a=n(7092);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},4034:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(5773),a=n(7378),o=n(8944),i=n(6457),l=n(5421);const s={themedImage:"themedImage_BQGR","themedImage--light":"themedImage--light_HAxW","themedImage--dark":"themedImage--dark_bGx0"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},p)))))}},376:(e,t,n)=>{"use strict";n.d(t,{u:()=>l,z:()=>h});var r=n(5773),a=n(7378),o=n(161),i=n(6903);function l(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const s={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?s:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??"ease-in-out"}`,height:`${t}px`}}function l(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=s.height,e.style.overflow=s.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!o.Z.canUseDOM)return e?s:u}function f(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return d({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),i?.(n))},className:l},r)}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(f,(0,r.Z)({},n,{collapsed:l})):null}function h(e){let{lazy:t,...n}=e;const r=t?m:f;return a.createElement(r,n)}},10:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7378),a=n(6457),o=n(1819),i=n(1763),l=n(624);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},5421:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7378),a=n(161),o=n(1763),i=n(1819),l=n(624);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d="light",p="dark",f=e=>e===p?p:d;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,i]=(0,r.useState)((e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e))(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(i(t),a&&(e=>{c.set(f(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p:d:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&s(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,s]);const m=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||m.current?m.current=window.matchMedia("print").matches:s(null)};return e.addListener(r),()=>e.removeListener(r)}),[s,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:s,get isDarkTheme(){return o===p},setLightTheme(){s(d)},setDarkTheme(){s(p)}})),[o,s])}function h(e){let{children:t}=e;const n=m();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},4453:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>b});var r=n(7378),a=n(2935),o=n(5688),i=n(624),l=n(6100),s=n(1763),u=n(1819);const c=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},p=(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),f=(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()};const m=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(f(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return r.createElement(m.Provider,{value:n},t)}function b(e){let{children:t}=e;return l.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},2095:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7378),a=n(1763);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},2335:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7378),a=n(3471),o=n(8357),i=n(5331),l=(n(644),n(1763));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(624);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function p(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function f(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3471:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7378),a=n(1763);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},174:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7378);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},8357:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7378),a=n(161);const o="desktop",i="mobile",l="ssr";function s(){return a.Z.canUseDOM?window.innerWidth>996?o:i:l}function u(){const[e,t]=(0,r.useState)((()=>s()));return(0,r.useEffect)((()=>{function e(){t(s())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},5484:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},6903:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},6100:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>p,_F:()=>m,cE:()=>d,hI:()=>w,lO:()=>b,vY:()=>y,oz:()=>v,s1:()=>g});var r=n(7378),a=n(5331),o=n(5473),i=n(2935),l=n(4453),s=n(2095);function u(e){return Array.from(new Set(e))}var c=n(8862);const d=!!i._r;function p(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=p(t);if(e)return e}}}const f=(e,t)=>void 0!==e&&(0,c.Mg)(e,t);function m(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||((e,t)=>e.some((e=>m(e,t))))(e.items,t))}function h(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function g(){const e=(0,s.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?h({sidebarItems:e.items,pathname:t}):null}function b(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function v(e,t){const n=b(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function y(e,t){const n=b(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function w(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},8831:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>c,VC:()=>f});var r=n(7378),a=n(8944),o=n(7092),i=n(6881);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(8948),u=n(353);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},1763:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7378);const a=n(161).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8862:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7378),a=n(6623),o=n(353);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},3457:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d});var r=n(7378),a=n(161),o=n(6457),i=n(1763);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3149:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(353);const r="default";function a(e,t){return`docs-${e}-${t}`}},1819:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7378),n(644);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},3714:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(353),a=n(5331),o=n(1721);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},4993:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7378),a=n(5331),o=n(1763);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},624:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(353);function a(){return(0,r.Z)().siteConfig.themeConfig}},2520:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},6102:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},1721:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(2520);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(6102);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6623:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7378),a=n(5773),o=n(1237),i=n.n(o),l=n(6887);const s={"093b54b2":[()=>n.e(931).then(n.bind(n,759)),"@site/docs/specification/Architecture.md",759],"0ec70f04":[()=>n.e(4291).then(n.bind(n,6404)),"@site/docs/specification/Counterfeiting.md",6404],"0f265e1c":[()=>n.e(3618).then(n.t.bind(n,3769,19)),"/home/runner/work/spec-untp/spec-untp/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"17278e47":[()=>n.e(7519).then(n.bind(n,6258)),"@site/docs/extensions/ExtensionsRegister.md",6258],17896441:[()=>Promise.all([n.e(532),n.e(3074),n.e(7918)]).then(n.bind(n,3901)),"@theme/DocItem",3901],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,5553)),"@theme/DocPage",5553],"1da5c89c":[()=>n.e(1075).then(n.bind(n,3130)),"@site/docs/specification/DataCarriers.md",3130],"1e32532d":[()=>n.e(8155).then(n.bind(n,9882)),"@site/docs/business-case/index.md",9882],"1f391b9e":[()=>Promise.all([n.e(532),n.e(3074),n.e(3085)]).then(n.bind(n,3981)),"@theme/MDXPage",3981],"1f60d0d4":[()=>n.e(6539).then(n.bind(n,2370)),"@site/docs/about/index.md",2370],"2288f947":[()=>n.e(5824).then(n.bind(n,756)),"@site/docs/business-case/Certifiers.md",756],"2505769c":[()=>n.e(1881).then(n.bind(n,514)),"@site/docs/about/Requirements.md",514],"2512955b":[()=>n.e(4897).then(n.bind(n,3834)),"@site/docs/specification/TrustAnchors.md",3834],"2a91474c":[()=>n.e(9548).then(n.bind(n,6374)),"@site/docs/business-case/Regulators.md",6374],"2cd93b55":[()=>n.e(6086).then(n.bind(n,6659)),"@site/docs/extensions/ExtensionsMethodology.md",6659],"33629ac6":[()=>n.e(6152).then(n.bind(n,8192)),"@site/docs/about/Pledge.md",8192],"33b4f319":[()=>n.e(9869).then(n.bind(n,567)),"@site/docs/tools-and-support/index.md",567],"3551f6a5":[()=>n.e(2682).then(n.bind(n,965)),"@site/docs/about/Goals.md",965],"3d1a1f61":[()=>n.e(7980).then(n.bind(n,3452)),"@site/docs/about/FAQ.md",3452],"405b4c03":[()=>n.e(5793).then(n.bind(n,3003)),"@site/docs/implementations/Register.md",3003],"445e7840":[()=>n.e(719).then(n.bind(n,3570)),"@site/src/pages/terms.md",3570],"47aebe80":[()=>n.e(708).then(n.bind(n,9637)),"@site/docs/tools-and-support/TestCases.md",9637],"4c33b76c":[()=>n.e(5176).then(n.bind(n,2034)),"@site/docs/specification/TraceabilityEvents.md",2034],"583db3ef":[()=>n.e(7363).then(n.bind(n,8109)),"@site/docs/extensions/index.md",8109],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"62737bf6":[()=>n.e(5569).then(n.bind(n,1710)),"@site/docs/specification/VerifiableCredentials.md",1710],"65c00cee":[()=>n.e(8741).then(n.bind(n,8868)),"@site/docs/business-case/Industry.md",8868],"82e10b7f":[()=>n.e(4124).then(n.bind(n,4055)),"@site/docs/implementations/index.md",4055],"8e33b65d":[()=>n.e(9052).then(n.bind(n,6304)),"@site/src/pages/privacy.md",6304],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"940a6c6b":[()=>n.e(1660).then(n.bind(n,9960)),"@site/docs/specification/DigitalProductPassport.md",9960],"958936f8":[()=>n.e(7661).then(n.bind(n,2973)),"@site/docs/specification/ConformityCredential.md",2973],"9a5e7696":[()=>n.e(129).then(n.bind(n,7978)),"@site/docs/implementations/Conformity.md",7978],"9dc67cb9":[()=>n.e(3166).then(n.t.bind(n,5745,19)),"/home/runner/work/spec-untp/spec-untp/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],a2bbd68c:[()=>n.e(1895).then(n.bind(n,2369)),"@site/docs/specification/MassBalance.md",2369],a857e339:[()=>n.e(9704).then(n.bind(n,193)),"@site/docs/specification/Vocabularies.md",193],bbfdce2e:[()=>n.e(6785).then(n.bind(n,7551)),"@site/docs/about/Governance.md",7551],c4f5d8e4:[()=>n.e(4195).then(n.bind(n,4262)),"@site/src/pages/index.js",4262],d0ec1786:[()=>n.e(8448).then(n.bind(n,5708)),"@site/docs/specification/Identifiers.md",5708],d33a9fa5:[()=>n.e(895).then(n.bind(n,7802)),"@site/docs/tools-and-support/TestService.md",7802],e1c9fc2b:[()=>n.e(5459).then(n.bind(n,9031)),"@site/docs/tools-and-support/Tools.md",9031],e34db49c:[()=>n.e(8533).then(n.bind(n,453)),"@site/docs/specification/TrustGraphs.md",453],e35f2a6c:[()=>n.e(3156).then(n.bind(n,6396)),"@site/docs/business-case/Associations.md",6396],e74b677a:[()=>n.e(9460).then(n.bind(n,7266)),"@site/docs/tools-and-support/Support.md",7266],f0a5ab13:[()=>n.e(2106).then(n.bind(n,3778)),"@site/docs/specification/Confidentiality.md",3778],f5f78f72:[()=>n.e(4434).then(n.bind(n,3736)),"@site/docs/specification/index.md",3736],f70bb399:[()=>n.e(7533).then(n.bind(n,980)),"@site/docs/business-case/Software.md",980],fa231c41:[()=>n.e(855).then(n.bind(n,2678)),"@site/docs/specification/Rules.md",2678]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(3361),d=n(6881);function p(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(3893).then(n.bind(n,3893)),modules:["@theme/NotFound"],webpack:()=>[3893],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const f=[{path:"/spec-untp/privacy",component:p("/spec-untp/privacy","721"),exact:!0},{path:"/spec-untp/terms",component:p("/spec-untp/terms","215"),exact:!0},{path:"/spec-untp/docs",component:p("/spec-untp/docs","545"),routes:[{path:"/spec-untp/docs/about/",component:p("/spec-untp/docs/about/","c4d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/about/FAQ",component:p("/spec-untp/docs/about/FAQ","8e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/about/Goals",component:p("/spec-untp/docs/about/Goals","316"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/about/Governance",component:p("/spec-untp/docs/about/Governance","7fd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/about/Pledge",component:p("/spec-untp/docs/about/Pledge","8e0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/about/Requirements",component:p("/spec-untp/docs/about/Requirements","abd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/business-case/",component:p("/spec-untp/docs/business-case/","a0b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/business-case/Associations",component:p("/spec-untp/docs/business-case/Associations","38a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/business-case/Certifiers",component:p("/spec-untp/docs/business-case/Certifiers","cdd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/business-case/Industry",component:p("/spec-untp/docs/business-case/Industry","6f6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/business-case/Regulators",component:p("/spec-untp/docs/business-case/Regulators","2b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/business-case/Software",component:p("/spec-untp/docs/business-case/Software","8b8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/extensions/",component:p("/spec-untp/docs/extensions/","e59"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/extensions/ExtensionsMethodology",component:p("/spec-untp/docs/extensions/ExtensionsMethodology","fe1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/extensions/ExtensionsRegister",component:p("/spec-untp/docs/extensions/ExtensionsRegister","dac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/implementations/",component:p("/spec-untp/docs/implementations/","6b5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/implementations/Conformity",component:p("/spec-untp/docs/implementations/Conformity","bfe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/implementations/Register",component:p("/spec-untp/docs/implementations/Register","3b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/",component:p("/spec-untp/docs/specification/","096"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/Architecture",component:p("/spec-untp/docs/specification/Architecture","fd1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/Confidentiality",component:p("/spec-untp/docs/specification/Confidentiality","2d2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/ConformityCredential",component:p("/spec-untp/docs/specification/ConformityCredential","230"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/Counterfeiting",component:p("/spec-untp/docs/specification/Counterfeiting","1ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/DataCarriers",component:p("/spec-untp/docs/specification/DataCarriers","051"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/DigitalProductPassport",component:p("/spec-untp/docs/specification/DigitalProductPassport","970"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/Identifiers",component:p("/spec-untp/docs/specification/Identifiers","3ad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/MassBalance",component:p("/spec-untp/docs/specification/MassBalance","4e7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/Rules",component:p("/spec-untp/docs/specification/Rules","bec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/TraceabilityEvents",component:p("/spec-untp/docs/specification/TraceabilityEvents","720"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/TrustAnchors",component:p("/spec-untp/docs/specification/TrustAnchors","1a3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/TrustGraphs",component:p("/spec-untp/docs/specification/TrustGraphs","2e5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/VerifiableCredentials",component:p("/spec-untp/docs/specification/VerifiableCredentials","52a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/specification/Vocabularies",component:p("/spec-untp/docs/specification/Vocabularies","99c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/tools-and-support/",component:p("/spec-untp/docs/tools-and-support/","390"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/tools-and-support/Support",component:p("/spec-untp/docs/tools-and-support/Support","8ec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/tools-and-support/TestCases",component:p("/spec-untp/docs/tools-and-support/TestCases","d6a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/tools-and-support/TestService",component:p("/spec-untp/docs/tools-and-support/TestService","981"),exact:!0,sidebar:"tutorialSidebar"},{path:"/spec-untp/docs/tools-and-support/Tools",component:p("/spec-untp/docs/tools-and-support/Tools","591"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/spec-untp/",component:p("/spec-untp/","1e3"),exact:!0},{path:"*",component:p("*")}]},8944:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>_,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(5773);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1115);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9185),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5182:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},3801:(e,t,n)=>{"use strict";n.r(t)},9225:(e,t,n)=>{"use strict";n.r(t)},142:(e,t,n)=>{"use strict";n.r(t)},8504:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},2525:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}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(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(e),u=1;u{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var C,_=1;if(v){if(!(C=o(k,S,e,b))||C.index>=e.length)break;var T=C.index,A=C.index+C[0].length,L=S;for(L+=E.value.length;T>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(Ld.reach&&(d.reach=I);var D=E.prev;if(N&&(D=s(t,D,N),S+=N.length),u(t,D,_),E=s(t,D,new a(p,g?r.tokenize(P,g):P,y,P)),O&&s(t,E,O),_>1){var M={cause:p+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|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|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),p=Object.keys(c);return i=0,function e(t){for(var n=0;n=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof u?l.splice.apply(l,[s,1].concat(v)):u.content=v}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|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|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9911:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},3916:(e,t,n)=>{const r=n(9911),a=n(4587),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3392).resolve(t)],delete Prism.languages[e],n(3392)(t),o.add(e)}))}i.silent=!1,e.exports=i},3392:(e,t,n)=>{var r={"./":3916};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3392},4587:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in c))for(var v in f(b))if(v in c){p[b]=!0;break}for(var y in m=p)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},8772:(e,t,n)=>{"use strict";var r=n(331);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=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 l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint: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:a};return n.PropTypes=n,n}},3615:(e,t,n)=>{e.exports=n(8772)()},331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3577:(e,t,n)=>{"use strict";var r=n(7378),a=n(2525),o=n(1102);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n