diff --git a/ImplementationGuide-who.fhir.smart-ig-empty.json b/ImplementationGuide-who.fhir.smart-ig-empty.json new file mode 100644 index 00000000..5184d61d --- /dev/null +++ b/ImplementationGuide-who.fhir.smart-ig-empty.json @@ -0,0 +1,848 @@ +{ + "resourceType" : "ImplementationGuide", + "id" : "who.fhir.smart-ig-empty", + "meta" : { + "profile" : ["SMARTImplementationGuide"] + }, + "text" : { + "status" : "generated", + "div" : "
Generated Narrative: ImplementationGuide who.fhir.smart-ig-empty
The official URL for this implementation guide is:
http://worldhealthorganization.github.io/smart/ImplementationGuide/who.fhir.smart-ig-empty
An empty Implementation Guide to be used as a starting point for building SMART Guidelines Implementation Guides
\nGenerated Narrative: ImplementationGuide who.fhir.smart-ig-empty
The official URL for this implementation guide is:
http://worldhealthorganization.github.io/smart/ImplementationGuide/who.fhir.smart-ig-empty
An empty Implementation Guide to be used as a starting point for building SMART Guidelines Implementation Guides
\nGenerated Narrative: ImplementationGuide who.fhir.smart-ig-empty
The official URL for this implementation guide is:
http://worldhealthorganization.github.io/smart/ImplementationGuide/who.fhir.smart-ig-empty
An empty Implementation Guide to be used as a starting point for building SMART Guidelines Implementation Guides
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SMART Empty IG
+
+ 0.1.0 - ci-build
+
+
+
+
SMART Empty IG, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-ig-empty/tree/main and changes regularly. See the Directory of published versions
+The following page provides a reference to resources that can guide countries in adapting the guidelines for country use.
+ +To implement WHO recommendations in country settings, governments must interpret and then adapt the content in line with local policies, procedures, and digital tools.
+ +This implementation guide provides the generic content required in digital systems, independently of a specific software application and with the intention that countries can adapt it to meet local needs.
+ +WHO guidelines articulate and endorse rigorously tested recommendations for health interventions to be adopted within country programs. When applied correctly and consistently, guideline recommendations save lives. To ensure that countries can effectively benefit from digital health investments, the SMART Guidelines approach is intended to facilitate the accurate reflection of WHO’s clinical, public health and data use guidelines in the digital systems that countries are adopting.
+ +For more on layers of knowledge representation and how they are used in WHO’s SMART Guidelines approach, see WHO’s SMART Guidelines and this Lancet article.
+ +The standards-based technical artifacts in this implementation guide are at the third layer of knowledge representation (L3: Machine-readable recommendations). It provides code necessary for software developers to incorporate standardised logic from WHO guidelines into digital systems, testable for conformance to standards including fidelity to recommendations. A standards-based technical implementation guide builds on operational (L2) by mapping L2 content to value sets and Health Level Seven International Fast Healthcare Interoperability Resources (FHIR) standards. Alongside data standards from L2, this allows for semantic and syntactic interoperability at scale. The logic derived from guidelines, which might include clinical decision support and calculations for performance indicators, which may be encoded into Clinical Quality Language (CQL). This ensures that key indicators can be consistently extracted to support patient care, as well as case surveillance and programme monitoring. The machine-readable representations in this implementation guide are intended for adaptation into countries’ digital health service delivery and reporting systems. Digital solutions comprising L3 machine-readable recommendations may then be testable for conformance to interoperability standards.
+ +The fourth layer (L4: Executable—reference applications and services) focuses on software applications and services within a digital ecosystem. It is intended to include executable reference software that accurately represents the intentions, operational, and functional requirements of the WHO recommendations; addresses user and health system needs; and comprises machine-readable data and calculations within interoperability standards, as documented in the L1–L3 layers. As a fully functional application, it is intended to serve as a generic starting point, ready to be localised to the specific operational context of the users, population, and health system within which it is deployed. Additional products at this layer include terminology services to support consistent data representation for interoperability; reusable software libraries including software development kits; application programming interfaces; and function as a service to support updates to FHIR content and capabilities across subscribed digital systems.
+ + + +SMART Empty IG
+
+ 0.1.0 - ci-build
+
+
+
+
SMART Empty IG, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-ig-empty/tree/main and changes regularly. See the Directory of published versions
+Contents:
+This page provides a list of the FHIR artifacts defined as part of this implementation guide.
+=l&&H.type===e)return E}if(r){const E=a[l];if(E&&Oi(E)&&E.type===e)return l}return null}function Ss(n,t,e,i){let r=n[e];const o=t.data;if(function pd(n){return n instanceof Cs}(r)){const a=r;a.resolving&&
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function hs(n,t){const e=t?`. Dependency path: ${t.join(" > ")} > ${n}`:"";throw new Se(-200,`Circular dependency in DI detected for ${n}${e}`)}(function Me(n){return"function"==typeof n?n.name||n.toString():"object"==typeof n&&null!=n&&"function"==typeof n.type?n.type.name||n.type.toString():et(n)}(o[e]));const s=Rt(a.canSeeViewProviders);a.resolving=!0;const l=a.injectImpl?xi(a.injectImpl):null;ku(n,i,lt.Default);try{r=n[e]=a.factory(void 0,o,n,i),t.firstCreatePass&&e>=i.directiveStart&&
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function fd(n,t,e){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=t.type.prototype;if(i){const a=Pc(t);(e.preOrderHooks||(e.preOrderHooks=[])).push(n,a),(e.preOrderCheckHooks||(e.preOrderCheckHooks=[])).push(n,a)}r&&(e.preOrderHooks||(e.preOrderHooks=[])).push(0-n,r),o&&((e.preOrderHooks||(e.preOrderHooks=[])).push(n,o),(e.preOrderCheckHooks||(e.preOrderCheckHooks=[])).push(n,o))}(e,o[e],t)}finally{null!==l&&xi(l),Rt(s),a.resolving=!1,Eu()}}return r}function Ru(n,t,e){return!!(e[t+(n>>5)]&1< {const le=P>0?ye==E?1:P*ye:a[ye],Pe=le*ne;e.currentTime=H+G.delay+Pe,G.duration=Pe,this._validateStyleAst(ue,e),ue.offset=le,i.styles.push(ue)}),i}visitReference(t,e){return{type:8,animation:Yr(this,W1(t.animation),e),options:qs(t.options)}}visitAnimateChild(t,e){return e.depCount++,{type:9,options:qs(t.options)}}visitAnimateRef(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:qs(t.options)}}visitQuery(t,e){const i=e.currentQuerySelector,r=t.options||{};e.queryCount++,e.currentQuery=t;const[o,a]=function sN(n){const t=!!n.split(/\s*,\s*/).find(e=>":self"==e);return t&&(n=n.replace(oN,"")),n=n.replace(/@\*/g,v4).replace(/@\w+/g,e=>v4+"-"+e.slice(1)).replace(/:animating/g,D6),[n,t]}(t.selector);e.currentQuerySelector=i.length?i+" "+o:o,Ur(e.collectedStyles,e.currentQuerySelector,new Map);const s=Yr(this,W1(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:11,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:a,animation:s,originalSelector:t.selector,options:qs(t.options)}}visitStagger(t,e){e.currentQuery||e.errors.push(function CF(){return new Se(3013,!1)}());const i="full"===t.timings?{duration:0,delay:0,easing:"full"}:_4(t.timings,e.errors,!0);return{type:12,animation:Yr(this,W1(t.animation),e),timings:i,options:null}}}class cN{constructor(t){this.errors=t,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function qs(n){return n?(n=$1(n)).params&&(n.params=function lN(n){return n?$1(n):null}(n.params)):n={},n}function E6(n,t,e){return{duration:n,delay:t,easing:e}}function O6(n,t,e,i,r,o,a=null,s=!1){return{type:1,element:n,keyframes:t,preStyleProps:e,postStyleProps:i,duration:r,delay:o,totalTime:r+o,easing:a,subTimeline:s}}class T4{constructor(){this._map=new Map}get(t){return this._map.get(t)||[]}append(t,e){let i=this._map.get(t);i||this._map.set(t,i=[]),i.push(...e)}has(t){return this._map.has(t)}clear(){this._map.clear()}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const mN=new RegExp(":enter","g"),gN=new RegExp(":leave","g");function I6(n,t,e,i,r,o=new Map,a=new Map,s,l,u=[]){return(new vN).buildKeyframes(n,t,e,i,r,o,a,s,l,u)}class vN{buildKeyframes(t,e,i,r,o,a,s,l,u,f=[]){u=u||new T4;const p=new A6(t,e,u,r,o,f,[]);p.options=l;const P=l.delay?Ca(l.delay):0;p.currentTimeline.delayNextStep(P),p.currentTimeline.setStyles([a],null,p.errors,l),Yr(this,i,p);const E=p.timelines.filter(H=>H.containsAnimation());if(E.length&&s.size){let H;for(let G=E.length-1;G>=0;G--){const ne=E[G];if(ne.element===e){H=ne;break}}H&&!H.allowOnlyTimelineStyles()&&H.setStyles([s],null,p.errors,l)}return E.length?E.map(H=>H.buildKeyframes()):[O6(e,[],[],[],0,P,"",!1)]}visitTrigger(t,e){}visitState(t,e){}visitTransition(t,e){}visitAnimateChild(t,e){const i=e.subInstructions.get(e.element);if(i){const r=e.createSubContext(t.options),o=e.currentTimeline.currentTime,a=this._visitSubInstructions(i,r,r.options);o!=a&&e.transformIntoNewTimeline(a)}e.previousNode=t}visitAnimateRef(t,e){const i=e.createSubContext(t.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([t.options,t.animation.options],e,i),this.visitReference(t.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=t}_applyAnimationRefDelays(t,e,i){var r;for(const o of t){const a=null==o?void 0:o.delay;if(a){const s="number"==typeof a?a:Ca(G1(a,null!==(r=null==o?void 0:o.params)&&void 0!==r?r:{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(t,e,i){let o=e.currentTimeline.currentTime;const a=null!=i.duration?Ca(i.duration):null,s=null!=i.delay?Ca(i.delay):null;return 0!==a&&t.forEach(l=>{const u=e.appendInstructionToTimeline(l,a,s);o=Math.max(o,u.duration+u.delay)}),o}visitReference(t,e){e.updateOptions(t.options,!0),Yr(this,t.animation,e),e.previousNode=t}visitSequence(t,e){const i=e.subContextCount;let r=e;const o=t.options;if(o&&(o.params||o.delay)&&(r=e.createSubContext(o),r.transformIntoNewTimeline(),null!=o.delay)){6==r.previousNode.type&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=D4);const a=Ca(o.delay);r.delayNextStep(a)}t.steps.length&&(t.steps.forEach(a=>Yr(this,a,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),e.previousNode=t}visitGroup(t,e){const i=[];let r=e.currentTimeline.currentTime;const o=t.options&&t.options.delay?Ca(t.options.delay):0;t.steps.forEach(a=>{const s=e.createSubContext(t.options);o&&s.delayNextStep(o),Yr(this,a,s),r=Math.max(r,s.currentTimeline.currentTime),i.push(s.currentTimeline)}),i.forEach(a=>e.currentTimeline.mergeTimelineCollectedStyles(a)),e.transformIntoNewTimeline(r),e.previousNode=t}_visitTiming(t,e){if(t.dynamic){const i=t.strValue;return _4(e.params?G1(i,e.params,e.errors):i,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}}visitAnimate(t,e){const i=e.currentAnimateTimings=this._visitTiming(t.timings,e),r=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),r.snapshotCurrentStyles());const o=t.style;5==o.type?this.visitKeyframes(o,e):(e.incrementTime(i.duration),this.visitStyle(o,e),r.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}visitStyle(t,e){const i=e.currentTimeline,r=e.currentAnimateTimings;!r&&i.hasCurrentStyleProperties()&&i.forwardFrame();const o=r&&r.easing||t.easing;t.isEmptyStep?i.applyEmptyStep(o):i.setStyles(t.styles,o,e.errors,e.options),e.previousNode=t}visitKeyframes(t,e){const i=e.currentAnimateTimings,r=e.currentTimeline.duration,o=i.duration,s=e.createSubContext().currentTimeline;s.easing=i.easing,t.styles.forEach(l=>{s.forwardTime((l.offset||0)*o),s.setStyles(l.styles,l.easing,e.errors,e.options),s.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(s),e.transformIntoNewTimeline(r+o),e.previousNode=t}visitQuery(t,e){const i=e.currentTimeline.currentTime,r=t.options||{},o=r.delay?Ca(r.delay):0;o&&(6===e.previousNode.type||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=D4);let a=i;const s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=s.length;let l=null;s.forEach((u,f)=>{e.currentQueryIndex=f;const p=e.createSubContext(t.options,u);o&&p.delayNextStep(o),u===e.element&&(l=p.currentTimeline),Yr(this,t.animation,p),p.currentTimeline.applyStylesToKeyframe(),a=Math.max(a,p.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(a),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}visitStagger(t,e){const i=e.parentContext,r=e.currentTimeline,o=t.timings,a=Math.abs(o.duration),s=a*(e.currentQueryTotal-1);let l=a*e.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":l=s-l;break;case"full":l=i.currentStaggerTime}const f=e.currentTimeline;l&&f.delayNextStep(l);const p=f.currentTime;Yr(this,t.animation,e),e.previousNode=t,i.currentStaggerTime=r.currentTime-p+(r.startTime-i.currentTimeline.startTime)}}const D4={};class A6{constructor(t,e,i,r,o,a,s,l){this._driver=t,this.element=e,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=o,this.errors=a,this.timelines=s,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=D4,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new k4(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(t,e){if(!t)return;const i=t;let r=this.options;null!=i.duration&&(r.duration=Ca(i.duration)),null!=i.delay&&(r.delay=Ca(i.delay));const o=i.params;if(o){let a=r.params;a||(a=this.options.params={}),Object.keys(o).forEach(s=>{(!e||!a.hasOwnProperty(s))&&(a[s]=G1(o[s],a,this.errors))})}}_copyOptions(){const t={};if(this.options){const e=this.options.params;if(e){const i=t.params={};Object.keys(e).forEach(r=>{i[r]=e[r]})}}return t}createSubContext(t=null,e,i){const r=e||this.element,o=new A6(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(t),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(t){return this.previousNode=D4,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(t,e,i){const r={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=i?i:0)+t.delay,easing:""},o=new _N(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,r,t.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}delayNextStep(t){t>0&&this.currentTimeline.delayNextStep(t)}invokeQuery(t,e,i,r,o,a){let s=[];if(r&&s.push(this.element),t.length>0){t=(t=t.replace(mN,"."+this._enterClassName)).replace(gN,"."+this._leaveClassName);let u=this._driver.query(this.element,t,1!=i);0!==i&&(u=i<0?u.slice(u.length+i,u.length):u.slice(0,i)),s.push(...u)}return!o&&0==s.length&&a.push(function wF(n){return new Se(3014,!1)}()),s}}class k4{constructor(t,e,i,r){this._driver=t,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=r,this.duration=0,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(t){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}fork(t,e){return this.applyStylesToKeyframe(),new k4(this._driver,t,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}_updateStyle(t,e){this._localTimelineStyles.set(t,e),this._globalTimelineStyles.set(t,e),this._styleSummary.set(t,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(t){t&&this._previousKeyframe.set("easing",t);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||ba),this._currentKeyframe.set(e,ba);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(t,e,i,r){var o;e&&this._previousKeyframe.set("easing",e);const a=r&&r.params||{},s=function yN(n,t){const e=new Map;let i;return n.forEach(r=>{if("*"===r){i=i||t.keys();for(let o of i)e.set(o,ba)}else es(r,e)}),e}(t,this._globalTimelineStyles);for(let[l,u]of s){const f=G1(u,a,i);this._pendingStyles.set(l,f),this._localTimelineStyles.has(l)||this._backFill.set(l,null!==(o=this._globalTimelineStyles.get(l))&&void 0!==o?o:ba),this._updateStyle(l,f)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((t,e)=>{this._currentKeyframe.set(e,t)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((t,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,t)}))}snapshotCurrentStyles(){for(let[t,e]of this._localTimelineStyles)this._pendingStyles.set(t,e),this._updateStyle(t,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const t=[];for(let e in this._currentKeyframe)t.push(e);return t}mergeTimelineCollectedStyles(t){t._styleSummary.forEach((e,i)=>{const r=this._styleSummary.get(i);(!r||e.time>r.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const t=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let r=[];this._keyframes.forEach((s,l)=>{const u=es(s,new Map,this._backFill);u.forEach((f,p)=>{"!"===f?t.add(p):f===ba&&e.add(p)}),i||u.set("offset",l/this.duration),r.push(u)});const o=t.size?y4(t.values()):[],a=e.size?y4(e.values()):[];if(i){const s=r[0],l=new Map(s);s.set("offset",0),l.set("offset",1),r=[s,l]}return O6(this.element,r,o,a,this.duration,this.startTime,this.easing,!1)}}class _N extends k4{constructor(t,e,i,r,o,a,s=!1){super(t,e,a.delay),this.keyframes=i,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=s,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let t=this.keyframes,{delay:e,duration:i,easing:r}=this.timings;if(this._stretchStartingKeyframe&&e){const o=[],a=i+e,s=e/a,l=es(t[0]);l.set("offset",0),o.push(l);const u=es(t[0]);u.set("offset",_b(s)),o.push(u);const f=t.length-1;for(let p=1;p<=f;p++){let P=es(t[p]);const E=P.get("offset");P.set("offset",_b((e+E*i)/a)),o.push(P)}i=a,e=0,r="",t=o}return O6(this.element,t,this.preStyleProps,this.postStyleProps,i,e,r,!0)}}function _b(n,t=3){const e=Math.pow(10,t-1);return Math.round(n*e)/e}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+class L6{}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+const bN=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class CN extends L6{normalizePropertyName(t,e){return P6(t)}normalizeStyleValue(t,e,i,r){let o="";const a=i.toString().trim();if(bN.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)o="px";else{const s=i.match(/^[+-]?[\d\.]+([a-z]*)$/);s&&0==s[1].length&&r.push(function hF(n,t){return new Se(3005,!1)}())}return a+o}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */function yb(n,t,e,i,r,o,a,s,l,u,f,p,P){return{type:0,element:n,triggerName:t,isRemovalTransition:r,fromState:e,fromStyles:o,toState:i,toStyles:a,timelines:s,queriedElements:l,preStyleProps:u,postStyleProps:f,totalTime:p,errors:P}}const F6={};class bb{constructor(t,e,i){this._triggerName=t,this.ast=e,this._stateStyles=i}match(t,e,i,r){return function wN(n,t,e,i,r){return n.some(o=>o(t,e,i,r))}(this.ast.matchers,t,e,i,r)}buildStyles(t,e,i){let r=this._stateStyles.get("*");return void 0!==t&&(r=this._stateStyles.get(null==t?void 0:t.toString())||r),r?r.buildStyles(e,i):new Map}build(t,e,i,r,o,a,s,l,u,f){var p;const P=[],E=this.ast.options&&this.ast.options.params||F6,G=this.buildStyles(i,s&&s.params||F6,P),ne=l&&l.params||F6,ue=this.buildStyles(r,ne,P),ye=new Set,le=new Map,Pe=new Map,Xe="void"===r,st={params:MN(ne,E),delay:null===(p=this.ast.options)||void 0===p?void 0:p.delay},Bt=f?[]:I6(t,e,this.ast.animation,o,a,G,ue,st,u,P);let yn=0;if(Bt.forEach(Ut=>{yn=Math.max(Ut.duration+Ut.delay,yn)}),P.length)return yb(e,this._triggerName,i,r,Xe,G,ue,[],[],le,Pe,yn,P);Bt.forEach(Ut=>{const Hn=Ut.element,On=Ur(le,Hn,new Set);Ut.preStyleProps.forEach(Ti=>On.add(Ti));const _i=Ur(Pe,Hn,new Set);Ut.postStyleProps.forEach(Ti=>_i.add(Ti)),Hn!==e&&ye.add(Hn)});const Ot=y4(ye.values());return yb(e,this._triggerName,i,r,Xe,G,ue,Bt,Ot,le,Pe,yn)}}function MN(n,t){const e=$1(t);for(const i in n)n.hasOwnProperty(i)&&null!=n[i]&&(e[i]=n[i]);return e}class SN{constructor(t,e,i){this.styles=t,this.defaultParams=e,this.normalizer=i}buildStyles(t,e){const i=new Map,r=$1(this.defaultParams);return Object.keys(t).forEach(o=>{const a=t[o];null!==a&&(r[o]=a)}),this.styles.styles.forEach(o=>{"string"!=typeof o&&o.forEach((a,s)=>{a&&(a=G1(a,r,e));const l=this.normalizer.normalizePropertyName(s,e);a=this.normalizer.normalizeStyleValue(s,l,a,e),i.set(l,a)})}),i}}class DN{constructor(t,e,i){this.name=t,this.ast=e,this._normalizer=i,this.transitionFactories=[],this.states=new Map,e.states.forEach(r=>{this.states.set(r.name,new SN(r.style,r.options&&r.options.params||{},i))}),Cb(this.states,"true","1"),Cb(this.states,"false","0"),e.transitions.forEach(r=>{this.transitionFactories.push(new bb(t,r,this.states))}),this.fallbackTransition=function kN(n,t,e){return new bb(n,{type:1,animation:{type:2,steps:[],options:null},matchers:[(a,s)=>!0],options:null,queryCount:0,depCount:0},t)}(t,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(t,e,i,r){return this.transitionFactories.find(a=>a.match(t,e,i,r))||null}matchStyles(t,e,i){return this.fallbackTransition.buildStyles(t,e,i)}}function Cb(n,t,e){n.has(t)?n.has(e)||n.set(e,n.get(t)):n.has(e)&&n.set(t,n.get(e))}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const xN=new T4;class PN{constructor(t,e,i){this.bodyNode=t,this._driver=e,this._normalizer=i,this._animations=new Map,this._playersById=new Map,this.players=[]}register(t,e){const i=[],o=z6(this._driver,e,i,[]);if(i.length)throw function PF(n){return new Se(3503,!1)}();this._animations.set(t,o)}_buildPlayer(t,e,i){const r=t.element,o=Jy(0,this._normalizer,0,t.keyframes,e,i);return this._driver.animate(r,o,t.duration,t.delay,t.easing,[],!0)}create(t,e,i={}){const r=[],o=this._animations.get(t);let a;const s=new Map;if(o?(a=I6(this._driver,e,o,T6,p4,new Map,new Map,i,xN,r),a.forEach(f=>{const p=Ur(s,f.element,new Map);f.postStyleProps.forEach(P=>p.set(P,null))})):(r.push(function zF(){return new Se(3300,!1)}()),a=[]),r.length)throw function EF(n){return new Se(3504,!1)}();s.forEach((f,p)=>{f.forEach((P,E)=>{f.set(E,this._driver.computeStyle(p,E,ba))})});const u=Ja(a.map(f=>{const p=s.get(f.element);return this._buildPlayer(f,new Map,p)}));return this._playersById.set(t,u),u.onDestroy(()=>this.destroy(t)),this.players.push(u),u}destroy(t){const e=this._getPlayer(t);e.destroy(),this._playersById.delete(t);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(t){const e=this._playersById.get(t);if(!e)throw function OF(n){return new Se(3301,!1)}();return e}listen(t,e,i,r){const o=C6(e,"","","");return y6(this._getPlayer(t),i,o,r),()=>{}}command(t,e,i,r){if("register"==i)return void this.register(t,r[0]);if("create"==i)return void this.create(t,e,r[0]||{});const o=this._getPlayer(t);switch(i){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(t)}}}
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */const wb="ng-animate-queued",N6="ng-animate-disabled",AN=[],Mb={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},LN={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},oo="__ng_removed";class R6{constructor(t,e=""){this.namespaceId=e;const i=t&&t.hasOwnProperty("value");if(this.value=function VN(n){return null!=n?n:null}(i?t.value:t),i){const o=$1(t);delete o.value,this.options=o}else this.options={};this.options.params||(this.options.params={})}get params(){return this.options.params}absorbOptions(t){const e=t.params;if(e){const i=this.options.params;Object.keys(e).forEach(r=>{null==i[r]&&(i[r]=e[r])})}}}const K1="void",V6=new R6(K1);class FN{constructor(t,e,i){this.id=t,this.hostElement=e,this._engine=i,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+t,ao(e,this._hostClassName)}listen(t,e,i,r){if(!this._triggers.has(e))throw function IF(n,t){return new Se(3302,!1)}();if(null==i||0==i.length)throw function AF(n){return new Se(3303,!1)}();if(!function HN(n){return"start"==n||"done"==n}(i))throw function LF(n,t){return new Se(3400,!1)}();const o=Ur(this._elementListeners,t,[]),a={name:e,phase:i,callback:r};o.push(a);const s=Ur(this._engine.statesByElement,t,new Map);return s.has(e)||(ao(t,g4),ao(t,g4+"-"+e),s.set(e,V6)),()=>{this._engine.afterFlush(()=>{const l=o.indexOf(a);l>=0&&o.splice(l,1),this._triggers.has(e)||s.delete(e)})}}register(t,e){return!this._triggers.has(t)&&(this._triggers.set(t,e),!0)}_getTrigger(t){const e=this._triggers.get(t);if(!e)throw function FF(n){return new Se(3401,!1)}();return e}trigger(t,e,i,r=!0){const o=this._getTrigger(e),a=new H6(this.id,e,t);let s=this._engine.statesByElement.get(t);s||(ao(t,g4),ao(t,g4+"-"+e),this._engine.statesByElement.set(t,s=new Map));let l=s.get(e);const u=new R6(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&l&&u.absorbOptions(l.options),s.set(e,u),l||(l=V6),u.value!==K1&&l.value===u.value){if(!function YN(n,t){const e=Object.keys(n),i=Object.keys(t);if(e.length!=i.length)return!1;for(let r=0;r